home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / asmgen3.arc / ASMGEN3.ASM < prev    next >
Assembly Source File  |  1989-04-19  |  158KB  |  5,834 lines

  1. PAGE  59,132
  2. TITLE    ASMGEN - An 8086/8087/8088 disassembler
  3. ;==========================================================================
  4. ;==                                         ==
  5. ;==                    ASMGEN                         ==
  6. ;==                                         ==
  7. ;==      Created:   3-Jun-85                             ==
  8. ;==      Passes:    5           Analysis Flags on: HIK                 ==
  9. ;==                                         ==
  10. ;==========================================================================
  11. ; This disassembly and code revision of ASMGEN was performed by:
  12. ;            James E.Galbraith
  13. ;            1201 Chase St. 
  14. ;            Novato, CA 94945
  15. ;
  16. ; This source code was generated from the public domain program ASMGEN.COM,
  17. ; version 2.01, by using the disassembler program SOURCER.  The disassembly 
  18. ; of ASMGEN, using ASMGEN as the disassembler, was used for reference.  Two 
  19. ; different disassembler programs were used because they use entirely 
  20. ; different strategies, and have somewhat complementary strengths and 
  21. ; weaknesses.  Numerous iterations were required before a good disassembly 
  22. ; was accomplished.  The phrase "good disassembly" means regenerated source 
  23. ; code that can be altered, and then be reassembled to properly executable 
  24. ; code.  The simplest test for a good disassembly is to insert a NOP 
  25. ; instruction at the beginning of the program or between any arbitrary 
  26. ; pair of instructions and then reassemble it.  If the program runs the 
  27. ; same as before, then the test may have passed.  Until such a "good 
  28. ; disassembly" has been achieved, there must be no changes to any of the 
  29. ; address relationships in the program.  The main problems, which must be 
  30. ; resolved manually, are usually with immediate operand data values vs. 
  31. ; address offsets, and embedded address difference relationships.  
  32. ;
  33. ; I got this program as a public domain program, and am releasing my 
  34. ; modified version back into public domain.  The only operational changes 
  35. ; that I made were to make it conform more closely to the description in 
  36. ; the ASMGEN.DOC file.  Program code changes were made to remove "hacker" 
  37. ; type self-modifying code and to make it easier for someone else to 
  38. ; disassemble it in the future.  I have included the original version, 
  39. ; along with ASMGEN.SEQ, as an example of an ASMGEN disassembly.
  40. ;==========================================================================
  41. ;
  42. ;    Changes made for Version 3.00.
  43. ;
  44. ; There are a number of changes that have been made to this program for
  45. ; version 3.00.  These changes are in two classes - fixing bugs and cleaning
  46. ; up bad code.  This includes what I consider particularly bad "8080 hacker" 
  47. ; style code.  Additionally, ASCII string messages have been placed in the 
  48. ; program code to indicate the location and nature of "points of interest" 
  49. ; for future disassembly.  Addresses listed are from the disassembled 
  50. ; version 2.01.  Specific program changes are commented below.
  51. ;
  52. ; 1.) The term "smoking gun" comes from its use to describe particularly
  53. ; damaging evidence in a court trial.  It is used here to describe
  54. ; particularly bad coding that would never have been written without
  55. ; hostile intent.  The most flagrent example (the "smoking gun") involves
  56. ; mucking around with the JMP instruction offset byte at address 0943 by
  57. ; various instructions.  The six instructions (at 02FF, 0377, 034A, 0358,
  58. ; 03D5, and 03FD) treat the offset byte with disrespect that is completely
  59. ; inappropriate to a jump offset byte.  The instruction at 03D5 is a
  60. ; DECrement instruction, an operation which is a totally incompatible with
  61. ; a JMP instruction offset byte in a variable byte length instruction set.
  62. ; These instructions have now been assigned their own byte variable, named
  63. ; SMOKING_GUN_0944.
  64. ;
  65. ; 2.) The altered immediate operand data values have been reassigned as
  66. ; conventional bytes or words (as appropriate).  They are initiallized to
  67. ; the value that was originally contained in the immediate operand.
  68. ;
  69. ; 3.) Altered instruction op-codes have been replaced by the use of flag
  70. ; bytes and conditional operations.  Such altered op-codes should have died 
  71. ; with the 8080.
  72. ;
  73. ; 4.) A number of TEST (AX,immediate operand) instructions were used to skip
  74. ; over the operand word.  The operand word was, itself, executable code and
  75. ; the destination of subroutine CALLs.  All such TEST instructions have been
  76. ; replaced by JMP SHORT instructions.  This is a "cute trick" that saves one
  77. ; byte of code, but makes the intent of the code more obscure until its
  78. ; function is deciphered.  If it weren't for the "smoking gun" item, above,
  79. ; this could be considered just 8080 style hacker code.
  80. ;
  81. ; 5.) The assembler directive 'PAGE 58,132' is added just preceding 'TITLE'.
  82. ;
  83. ; 6.) PATCH83 MACRO has been altered to allow using it correctly with the
  84. ; /H switch.  An 'H' is added to the '81' op-code byte.
  85. ;
  86. ; 7.) PATCH83 MACRO has been altered to allow it to accomodate negative
  87. ; numbers.
  88. ;
  89. ; 8.) The program code has been corrected to make PATCH83 work correctly.  In
  90. ; version 2.01 the tests were implemented incorrectly.  The function of PATCH83
  91. ; is based on an optimization trick allowed with the 8086/88 instruction set.
  92. ; An arithmetic or logical instruction that operates on a 16-bit register
  93. ; (other than AX) with an immediate operand, that can be expressed as a sign
  94. ; extended 8-bit value, has a shorter alternative instruction form.  This
  95. ; optimization is used with MASM 5.0 and 5.1, but not with earlier versions.
  96. ; Op-code 81H is for the 4-byte long form, 83H is for the 3-byte short form.  
  97. ; PATCH83 is used to force later versions of MASM to generate the longer form 
  98. ; so that the program can be reassembled to its original executable code.  
  99. ; Until data value vs address offset issues are resolved, it is absolutely 
  100. ; essential that code relationships not be altered.
  101. ;
  102. ;-----------------------------------------------------------------------
  103. ; This is the corrected PATCH83 MACRO definition (see symbol MAC_PATCH83).  
  104. ; This source code file (ASMGEN3) has been edited to include the three 
  105. ; occurences of "PATCH83" that (should) be generated when it is disassembled 
  106. ; using ASMGEN.COM.  These are the same ones that occur in ASMGEN version 
  107. ; 2.01, although it completely misses the third instance of PATCH83 (at offset 
  108. ; 14BC in version 2.01).  This has been done for the benefit of future users 
  109. ; of ASMGEN, when they try to disassemble ASMGEN.  It also makes it easier 
  110. ; to reassemble using earlier versions of Microsoft MASM than 5.0.
  111. PATCH83    MACRO    X
  112. ORG    $-3
  113. DB    81H
  114. ORG    $+2
  115. DB    X
  116. ENDM
  117. ;==========================================================================
  118. ;
  119. ;    Changes made for Version 3.01.
  120. ;
  121. ; 9.) The immediate operand value 0FFFF now has an 'H' suffix.  This means 
  122. ; that if the /H switch is set, it is no longer necessary to search for each 
  123. ; occurence to add an 'H'.  ASMGEN.COM version 2.01 can now be disassembled 
  124. ; with the /H switch set, and then reassembled with no severe errors.  There 
  125. ; are 116 warning errors, but that is merely MASM's commentary on the quality 
  126. ; of the version 2.01 code.
  127. ;
  128. ; 10.) The 'D' command now works correctly when the /H switch is set.
  129. ;
  130. ; 11.) INT 20H program termination was replaced with INT 21H Function 4CH, 
  131. ; except when running under DOS versions below 2.00, INT 21H Function 0.
  132. ;
  133. ;=======================================================================
  134. ;Program Segment Prefix (PSP) -- address allocation (either .COM or .EXE)
  135. ; 0000H, 2-byte = op-code INT 20H, return to DOS (an artifact of CPM)
  136. ; 0002H, 1-word = Segment, end of allocation block
  137. ; 0004H, 1-byte = Resreved for DOS
  138. ; 0005H, = long call to MS-DOS function dispatcher
  139. ; 000AH, DWord = prev. contents of termination interrupt vector, INT 22H
  140. ; 000EH, DWord = prev. contents of Ctrl-C handler interrupt vector, INT 23H
  141. ; 0012H, DWord = prev. contents of critical-error handler vector, INT 24H
  142. ; 0016H, 22-byte = Reserved for DOS
  143. ; 002CH, 1-word = Segment address of environment block
  144. ; 002EH,  -byte = Reserved for DOS
  145. ; 005CH, 16-byte = default FCB #1
  146. ; 006CH, 16-byte = default FCB #2 (overlaid if FCB #1 opened)
  147. ; 0080H, 128-byte = default Disk Transfer Area (buffer)
  148. ; 0080H, 1-byte = number of bytes transferred in command tail
  149. ; 0081H, 127-byte = command tail buffer area
  150. ;-----------------------------------------------------------------------
  151. ;Program Header for a .EXE file.
  152. ; 0000H, 1-byte = 4DH -- First part of .EXE file signature
  153. ; 0001H, 1-byte = 5AH -- Second part of .EXE file signature
  154. ; 0002H, 1-word = Length of file MOD 512
  155. ; 0004H, 1-word = Size of file in 512-byte pages, including header
  156. ; 0006H, 1-word = Number of relocation table items
  157. ; 0008H, 1-word = Size of header in paragraphs (16-byte units)
  158. ; 000AH, 1-word = Minimum number of paragraphs needed above program
  159. ; 000CH, 1-word = Maximum number of paragraphs desired above program
  160. ; 000EH, 1-word = Segment displacement of stack module
  161. ; 0010H, 1-word = Contents of Stack Pointer at entry
  162. ; 0012H, 1-word = Word checksum
  163. ; 0014H, 1-word = Contents of IP register at entry (Program Counter)
  164. ; 0016H, 1-word = Segment displacement of code module
  165. ; 0018H, 1-word = Offset of first relocation item in program
  166. ; 001AH, 1-byte = Overlay number (0 for resident part of program)
  167. ; 001BH, variable reserved space
  168. ;[0018]  Relocation table
  169. ;[0006]  variable reserved space (padding for 256-byte alignment)
  170. ;[0008]  Data segment(s)
  171. ;[0014]  Program segment(s), [0016:0014] is IP at program entry
  172. ;[001E]  Stack Segment
  173. ;-----------------------------------------------------------------------
  174. ;Normal File Control Block (FCB), total length is 37 bytes
  175. ;  00H, 1-byte = Drive Identification (not 0FFH)
  176. ; +01H, 8-byte = Filename (8-characters, padded with spaces)
  177. ; +09H, 3-byte = Extension (3-characters, padded with spaces)
  178. ; +0CH, 1-word = Current Block Number
  179. ; +0EH, 1-word = Record size
  180. ; +10H, 4-byte = FIle size (in bytes)
  181. ; +14H, 1-word = Date created/last updated
  182. ; +16H, 1-word = Time created/last updated
  183. ; +18H, 8-byte = Reserved for DOS
  184. ; +20H, 1-byte = Current record number
  185. ; +21H, 4-byte = Random Record Number
  186. ;-----------------------------------------------------------------------
  187. ;Extended File Control Block (FCB), total length is 44 bytes
  188. ;  00H, 1-byte = 0FFH
  189. ; +01H, 5-byte = Reserved (must be zeros)
  190. ; +06H, 1-byte = Attribute byte
  191. ; +07H, 1-byte = Drive Identification
  192. ; +08H, 8-byte = Filename (8-characters, padded with spaces)
  193. ; +10H, 3-byte = Extension (3-characters, padded with spaces)
  194. ; +13H, 1-word = Current Block Number
  195. ; +15H, 1-word = Record size
  196. ; +17H, 4-byte = FIle size (in bytes)
  197. ; +1BH, 1-word = Date created/last updated
  198. ; +1DH, 1-word = Time created/last updated
  199. ; +1FH, 8-byte = Reserved for DOS
  200. ; +27H, 1-byte = Current record number
  201. ; +28H, 4-byte = Random Record Number
  202. ;=======================================================================
  203.  
  204. DATA_0002_E    EQU    2            ; (=0)
  205. ;ALTR_W_03A6+1    EQU    3A7H            ; (72B5:703A7=0)
  206. ;ALTR_OPB_064A+0 EQU    64AH            ; (72B5:064A=0C3H)
  207. ;ALTR_W_0802+1    EQU    803H            ; (72B5:0803=0)
  208. ;ALTR_W_08E3+1    EQU    8E4H            ; (72B5:08E4=0)
  209. ;ALTR_J_B_0943+1 EQU    944H            ; (72B5:0944=0AH)
  210. ;ALTR_W_0945+1    EQU    946H            ; (72B5:0946=0)
  211. ;ALTR_W_09A0+1    EQU    9A1H            ; (72B5:09A1=0)
  212. ;ALTR_W_09E2+1    EQU    9E3H            ; (72B5:09E3=0FFFFH)
  213. ;ALTR_B_0A0E+2    EQU    0A10H            ; (72B5:0A10=40H)
  214. ;ALTR_W_0A47+1    EQU    0A48H            ; (72B5:0A48=10H)
  215. ;ALTR_W_0B2B+1    EQU    0B2CH            ; (72B5:0B2C=0)
  216. ;ALTR_W_0D37+1    EQU    0D38H            ; (72B5:0D38=0)
  217. ;ALTR_B_0EF8+1    EQU    0EF9H            ; (72B5:0EF9=0)
  218. ;ALTR_B_0F47+1    EQU    0F48H            ; (72B5:0F48=0)
  219. ;ALTR_B_0FBA+1    EQU    0FBBH            ; (72B5:0FBB=0)
  220. ;ALTR_J_B_1081+1 EQU    1082H            ; (72B5:1082=24H)
  221. ;ALTR_B_10AA+1    EQU    10ABH            ; (72B5:10AB=0)
  222. ;ALTR_B_10B6+1    EQU    10B7H            ; (72B5:10B7=0)
  223. ;ALTR_W_10BC+2    EQU    10BEH            ; (72B5:10BE=8888H)
  224. ;ALTR_W_1123+1    EQU    1124H            ; (72B5:1124=0)
  225. ;ALTR_W_1222+1    EQU    1223H            ; (72B5:1223=0)
  226. ;ALTR_OPW_1965+0 EQU    1965H            ; (72B5:1965=0CAFEH)
  227. ;ALTR_W_1AC9+1    EQU    1ACAH            ; (72B5:1ACA=0)
  228. ;DATA_2E9E_E    EQU    2E9EH            ; (=0)
  229.  
  230. ;DATA_2E9E_E    EQU    OFFSET LAST_BYTE+19FH
  231. DATA_2E9E_E    EQU    OFFSET DTA4_2C9E+512
  232.  
  233. CR        EQU    0DH
  234. LF        EQU    0AH
  235.  
  236. ;=======================================================================
  237.  
  238. SEG_A        SEGMENT
  239.         ASSUME    CS:SEG_A, DS:SEG_A
  240.  
  241.         ORG    100h
  242. ;=======================================================================
  243.  
  244. ASMGEN        PROC    FAR
  245.  
  246. START:
  247.         JMP    SHORT BEGIN
  248. ;==========================================================================
  249.  
  250.         DB    ' ASMGEN',7,1AH    ;name, beep, ctrl-Z (EOF)
  251. OLD_W_03A7    DW    0
  252. OLD_RET_NOP_064A DB    0    ;00=RETN, 0FFH=NOP (execute following code)
  253. OLD_W_0803    DW    0
  254. OLD_W_08E4    DW    0
  255. SMOKING_GUN_0944 DB    0    ;was altereed byte at 0944
  256. OLD_JUMP_0944    DB    0    ;00=jump, 0FFH=no jump
  257. OLD_W_0946    DW    0    ;(immediate) operand word/(byte?)
  258. OLD_W_09A1    DW    0
  259. OLD_W_09E3    DW    0FFFFH
  260. OLD_B_0A10    DB    040H
  261. OLD_W_0A48    DW    0010H
  262. OLD_W_0B2C    DW    0
  263. OLD_W_0D38    DW    0
  264. OLD_B_0EF9    DB    0
  265. OLD_B_0F48    DB    0
  266. OLD_B_0FBB    DB    0
  267. OLD_JUMP_1082    DB    0    ;00=jump, 0FFH=no jump
  268. OLD_B_10AB    DB    0
  269. OLD_B_10B7    DB    0
  270. OLD_W_10BE    DW    8888H
  271. OLD_W_1124    DW    0
  272. OLD_W_1223    DW    0
  273. OLD_DEC_1965    DB    1    ;01=decrement, 00=test for zero
  274. OLD_W_1ACA    DW    0
  275.  
  276. ;==========================================================================
  277.  
  278. ;**DAT_02B9    DB    0
  279. SEQ_FILE_CMDS    DB    0    ;(14 bytes in table)
  280.         DB    '/'    ; .SEQ switch character
  281.         DB    'I'    ; set Initial value for IP
  282.         DB    'A'    ; Assume directive
  283.         DB    'X'    ; repeat structure
  284.         DB    0, 0
  285.         DB    'D'    ; data operand (not label) (resume as code)
  286.         DB    '#'    ; defined length string
  287.         DB    '$'    ; defined length string
  288.         DB    'S'    ; disassemble as ASCII string of characters
  289.         DB    'W'    ; disassemble as data words or labels
  290.         DB    'B'    ; disassemble as data bytes
  291.         DB    'C'    ; disassemble as code
  292.  
  293. ;**DATA_02C7    DB    'MHBTFLERO'    
  294.                 ; SEQ_SW_BYTES, indexed switch characters 
  295. SEQ_FILE_SWITCH    DB    'M'    ; Suppress MACRO library
  296.         DB    'H'    ; Append hex 'H'
  297.         DB    'B'    ; Generate byte references
  298.         DB    'T'    ; Control trace output
  299.         DB    'F'    ; 8087 mnemonics
  300.         DB    'L'    ; Generate label or number
  301.         DB    'E'    ; Embedded references in ASM file
  302.         DB    'R'    ; Control TBL output
  303.         DB    'O'    ; Control ASM output
  304.  
  305. ;==========================================================================
  306.  
  307. EXIT_CODE    DB    00, 4CH            ; DOS EXIT function code
  308.  
  309. ;==========================================================================
  310. ;            Program Code Starts
  311. ;==========================================================================
  312.  
  313. BEGIN:        CLD                ; Clear direction
  314.         MOV    SP,OFFSET START
  315.  
  316.         MOV    AH,30H
  317.         INT    21H            ; get DOS version number
  318.         CMP    AL,2
  319.         JAE    DOS_2_UP
  320.         MOV    EXIT_CODE+1,0
  321. DOS_2_UP:
  322.         MOV    AX,DS:DATA_0002_E    ; (=0)
  323.         MOV    BX,CS
  324.         SUB    AX,BX
  325.         TEST    AH,0F0H
  326.         JZ    LOC_0115
  327.         MOV    AX,0FFFFH
  328.         JMP    SHORT LOC_0119
  329. LOC_0115:
  330.         MOV    CL,4
  331.         SHL    AX,CL            ; Shift w/zeros fill
  332. LOC_0119:
  333.         MOV    DATA_2883,AX        ; (=0)
  334.         SUB    AX,DATA_2E9E_E        ; (=0)
  335.         JC    LOC_0126
  336.         CMP    AX,100H
  337.         JAE    LOC_012C
  338. LOC_0126:
  339.         MOV    DX,OFFSET MS_INSUFF_MEM    ; (72B5:27D9=49H)
  340.         JMP    LOC_0214
  341. LOC_012C:
  342.         MOV    DX,OFFSET INT_23H_ENTRY
  343.         MOV    AX,2523H
  344.         INT    21H            ; DOS Services  ah=function 25h
  345.                         ;  set intrpt vector al to ds:dx
  346.         MOV    SI,81H            ; command tail in PSP
  347.         CALL    SCAN_SPTAB_0E3F
  348.         JNZ    LOC_013F
  349.         JMP    LOC_0204
  350. LOC_013F:
  351.         CALL    SUB_056C
  352.         CALL    SCAN_SPTAB_0E3F
  353.         JNZ    LOC_014F
  354. LOC_0147:
  355.         MOV    BYTE PTR FCB4_NAME_2A35,20H    ; (72B5:2A35=0AH) ' '
  356.         JMP    LOC_0269
  357. LOC_014F:
  358.         CMP    AL,3BH            ; ';'
  359.         JE    LOC_0147
  360.         CALL    SUB_0E37
  361.         MOV    DI,OFFSET FCB1_291C    ; 
  362.         MOV    AX,2904H
  363.         INT    21H            ; DOS Services  ah=function 29h
  364.                         ;  parse filenam @ds:si FCBes:di
  365.         CMP    BYTE PTR FCB1_NAME_291D,20H    ; (72B5:291D=20H) ' '
  366.         JNE    LOC_017D
  367.         PUSH    SI
  368.         MOV    SI,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  369.         MOV    DI,OFFSET FCB1_291C    ; (72B5:291C=0)
  370.         MOV    CX,9
  371.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  372.         MOV    SI,OFFSET MS_ASM_2764    ; (72B5:2764=41H)
  373.         MOV    DI,OFFSET FCB1_EXT_2925    ; (72B5:2925=20H)
  374.         MOV    CX,3
  375.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  376.         POP    SI
  377. LOC_017D:
  378.         CALL    SCAN_SPTAB_0E3F
  379.         JZ    LOC_01BD
  380.         CMP    AL,3BH            ; ';'
  381.         JE    LOC_01B9
  382.         CALL    SUB_0E37
  383.         MOV    DI,OFFSET FCB2_2942    ; (72B5:2942=0)
  384.         MOV    AX,2904H
  385.         INT    21H            ; DOS Services  ah=function 29h
  386.                         ;  parse filenam @ds:si FCBes:di
  387.         CMP    BYTE PTR FCB2_NAME_2943,20H    ; (72B5:2943=20H) ' '
  388.         JNE    LOC_01B0
  389.         PUSH    SI
  390.         MOV    SI,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  391.         MOV    DI,OFFSET FCB2_2942    ; (72B5:2942=0)
  392.         MOV    CX,9
  393.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  394.         MOV    SI,OFFSET MS_TBL_276E    ; (72B5:276E=54H)
  395.         MOV    DI,OFFSET FCB2_EXT_294B    ; (72B5:294B=20H)
  396.         MOV    CX,3
  397.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  398.         POP    SI
  399. LOC_01B0:
  400.         CALL    SCAN_SPTAB_0E3F
  401.         JZ    LOC_01BD
  402.         CMP    AL,3BH            ; ';'
  403.         JNE    LOC_0211
  404. LOC_01B9:
  405.         DEC    DATA_286F        ; (=0)
  406. LOC_01BD:
  407.         MOV    SI,OFFSET FCB1_NAME_291D    ; (72B5:291D=20H)
  408.         MOV    DI,OFFSET MS_NUL_2767    ; (72B5:2767=4EH)
  409.         MOV    CX,4
  410.         REPE    CMPSB            ; Rep zf=1+cx >0 Cmp [si] to es:[di]
  411.         JNZ    LOC_01D1
  412.         CMP    BYTE PTR FCB1_FILSZ_292C,20H    ; (72B5:292C=20H) ' '
  413.         JE    LOC_01EB
  414. LOC_01D1:
  415.         CMP    BYTE PTR FCB1_NAME_291D,20H    ; (72B5:291D=20H) ' '
  416.         JE    LOC_01EB
  417.         MOV    BYTE PTR DATA_2862,41H    ; (=0) 'A'
  418.         MOV    SI,OFFSET FCB1_291C    ; (72B5:291C=0)
  419.         MOV    DI,OFFSET FCB4_2A34    ; (72B5:2A34=0DH)
  420.         MOV    CX,24H            ; 36 decimal
  421.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  422.         CALL    SUB_0714
  423. LOC_01EB:
  424.         CMP    BYTE PTR FCB2_NAME_2943,20H    ; (72B5:2943=20H) ' '
  425.         JE    LOC_0226
  426.         MOV    BYTE PTR DATA_2862,52H    ; (=0) 'R'
  427.         MOV    SI,OFFSET FCB2_2942    ; (72B5:2942=0)
  428.         MOV    DI,OFFSET FCB4_2A34    ; (72B5:2A34=0DH)
  429.         MOV    CX,24H            ; 36 decimal
  430.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  431.         JMP    SHORT LOC_0269
  432. LOC_0204:
  433. ;**CHANGED**    MOV    DX,OFFSET MS_PC_DASM_2969    ; (72B5:2969=54H)
  434.         MOV    DX,OFFSET MS_PC_DISASMB    ; (72B5:2969=54H)
  435.         MOV    AH,9
  436.         INT    21H            ; DOS Services  ah=function 09h
  437.                         ;  display char string at ds:dx
  438.         CALL    SUB_06F1
  439.         JMP    SHORT LOC_0287
  440.     ;***    DB    90H
  441. LOC_0211:
  442.         MOV    DX,OFFSET MS_INVALID_CMD    ; (72B5:27ED=49H)
  443.  
  444. ASMGEN        ENDP
  445.  
  446. ;==========================================================================
  447. ;         Output Beep and error message DX
  448. ;==========================================================================
  449.  
  450. DSPY_ER_DX_0214    PROC    NEAR
  451. LOC_0214:
  452.         MOV    SP,OFFSET START
  453.         MOV    AL,7
  454.         CALL    DSPY_CHR_AL_070
  455. LOC_021C:
  456.         CALL    DSPY_CRLF_06FB
  457.         MOV    AH,9
  458.         INT    21H            ; DOS Services  ah=function 09h
  459.                         ;  display char string at ds:dx
  460. LOC_0223:
  461.         CALL    DSPY_CRLF_06FB
  462. LOC_0226:
  463.         TEST    BYTE PTR DATA_286F,0FFH    ; (=0)
  464.         JNZ    LOC_0290        ; INT 20H program terminate
  465.         CLD                ; Clear direction
  466.         MOV    SP,OFFSET START
  467.         MOV    DX,OFFSET MS_PROMPT_XARQ ; (=58H)
  468.         MOV    AH,9
  469.         INT    21H            ; DOS Services  ah=function 09h
  470.                         ;  display char string at ds:dx
  471.         MOV    SI,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  472.         CALL    SUB_06B1
  473.         MOV    DX,OFFSET DATA_2627    ; (=3EH)
  474.         MOV    AH,9
  475.         INT    21H            ; DOS Services  ah=function 09h
  476.                         ;  display char string at ds:dx
  477.         CALL    SUB_06F1
  478.         CALL    SCAN_SPTAB_0E3F
  479.         JZ    LOC_0226
  480.         LODSB                ; String [si] to al
  481.         AND    AL,5FH            ; clear bit-5, strip case
  482.         MOV    DATA_2862,AL        ; (=0)
  483.         MOV    DI,OFFSET FCB4_2A34    ; (72B5:2A34=0DH)
  484.         CMP    AL,41H            ; 'A'
  485.         JNE    LOC_0262
  486.         CALL    SUB_053A
  487.         CALL    SUB_0714
  488.         JMP    SHORT LOC_0226
  489. LOC_0262:
  490.         CMP    AL,52H            ; 'R'
  491.         JNE    LOC_0283
  492.         CALL    SUB_053A
  493. LOC_0269:
  494.         CMP    BYTE PTR DATA_2861,2    ; (=0)
  495.         JE    LOC_0277
  496.         PUSH    DI
  497.         PUSH    SI
  498.         CALL    SUB_071B
  499.         POP    SI
  500.         POP    DI
  501. LOC_0277:
  502.         CMP    BYTE PTR FCB4_NAME_2A35,20H    ; (72B5:2A35=0AH) ' '
  503.         JE    LOC_0226
  504.         CALL    SUB_0B4A
  505.         JMP    SHORT LOC_0226
  506. LOC_0283:
  507.         CMP    AL,58H            ; 'X'
  508.         JNE    LOC_028C
  509. LOC_0287:
  510.         CALL    SUB_056C
  511.         JMP    SHORT LOC_0226
  512.  
  513. LOC_028C:                    ; Is it "Q" for QUIT?
  514.         CMP    AL,51H            ; 'Q'
  515.         JNE    LOC_0211
  516. LOC_0290:
  517. ;**CHANGED**    INT    20H            ; Program Terminate
  518.         MOV    AX,WORD PTR EXIT_CODE
  519.         INT    21H            ; Program Terminate
  520.  
  521. DSPY_ER_DX_0214    ENDP
  522.  
  523.  
  524. ;==========================================================================
  525. ;
  526. ;            External Entry Point
  527. ;
  528. ;==========================================================================
  529.  
  530. INT_23H_ENTRY    PROC    FAR
  531.         STI                ; Enable interrupts
  532.         PUSH    CS
  533.         POP    SS
  534.         MOV    SP,OFFSET START
  535.         PUSH    CS
  536.         POP    DS
  537.         PUSH    CS
  538.         POP    ES
  539.         CALL    DSPY_CRLF_06FB
  540.         CALL    SUB_064A
  541.         CMP    BYTE PTR DATA_2861,2    ; (=0)
  542.         JE    LOC_02AC
  543.         CALL    SUB_0572
  544. LOC_02AC:
  545. ;**CHANGED**    MOV    DX,OFFSET DATA_268E    ; (72B5:268E=0DH)
  546.         MOV    DX,OFFSET MS_CRLF_$    ; (72B5:268E=0DH)
  547.         TEST    BYTE PTR DATA_286F,0FFH    ; (=0)
  548.         JNZ    LOC_0290        ; INT 20H, program terminate
  549.         JMP    LOC_021C        ; display CR LF
  550. INT_23H_ENTRY    ENDP
  551.  
  552. ;==========================================================================
  553. ;                   SUBROUTINE
  554. ;==========================================================================
  555.  
  556. SUB_02D0    PROC    NEAR
  557. LOC_02D0:
  558.         MOV    AL,0FFH
  559. ;**CHANGED**    MOV    DI,OFFSET DATA_2870    ; (=0FFH)
  560.         MOV    DI,OFFSET SEQ_SW_BYTES    ; (=0FFH)
  561.         MOV    CX,9
  562.         REP    STOSB            ; Rep when cx >0 Store al to es:[di]
  563.         MOV    SI,OFFSET MAC_PATCH83    ; (72B5:24E0=0)
  564. LOC_02DD:
  565.         LODSB                ; String [si] to al
  566.         CMP    AL,0FFH
  567.         JE    LOC_02EC
  568.         CMP    AL,1
  569.         JA    LOC_02DD
  570.         MOV    BYTE PTR [SI-1],0
  571.         JMP    SHORT LOC_02DD
  572. LOC_02EC:
  573.         PUSH    WORD PTR FCB3_EXT_2A17    ; (72B5:2A17=7261H)
  574.         PUSH    WORD PTR FCB3_EXT2_2A19    ; (72B5:2A19=2079H)
  575.         MOV    SI,OFFSET MS_SEQ_276B    ; (72B5:276B=53H)
  576.         MOV    DI,OFFSET FCB3_EXT1_2A18    ; (72B5:2A18=72H)
  577.         MOV    CX,3
  578.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  579. ;**CHANGED**    MOV    DS:ALTR_J_B_0943+1,CL    ; (72B5:0944=0AH)
  580.         MOV    DS:SMOKING_GUN_0944,CL    ; (72B5:0944=0AH)
  581.         CALL    SUB_0E00
  582.         MOV    DI,DATA_2E9E_E        ; (=0)
  583.         JNC    LOC_0314
  584. LOC_030B:
  585.         POP    WORD PTR FCB3_EXT2_2A19    ; (72B5:2A19=2079H)
  586.         POP    WORD PTR FCB3_EXT_2A17    ; (72B5:2A17=7261H)
  587.         RETN
  588. LOC_0314:
  589.         MOV    AX,WORD PTR FCB3_FILSZ_2A1F    ; (72B5:2A1F=2058H)
  590.         MOV    DATA_284D,AX        ; (72B5:284D=0)
  591.         MOV    BX,5
  592.         XOR    CX,CX
  593. LOC_031F:
  594.         CALL    SUB_04BE
  595.         DEC    BX
  596.         JP    LOC_031F        ; Jump if parity=1
  597. ;**CHANGED**    MOV    DS:ALTR_W_03A6+1,CX    ; (72B5:03A7=0)
  598.         MOV    DS:OLD_W_03A7,CX    ; (72B5:03A7=0)
  599. LOC_0329:
  600.         CALL    SUB_04D7
  601.         JC    LOC_030B
  602.         CALL    RD_SK_SPTB_1238
  603.         CMP    AL,61H            ; 'a' 
  604.         JB    LOC_0337
  605.         AND    AL,5FH            ; clear bit-5, strip case
  606. LOC_0337:
  607. ;**CHANGED**    CMP    BYTE PTR DS:ALTR_J_B_0943+1,0FFH    ; (72B5:0944=0AH)
  608.         CMP    BYTE PTR DS:SMOKING_GUN_0944,0FFH    ; (72B5:0944=0AH)
  609.         JE    LOC_03B5
  610.         PUSH    DI
  611. ;**CHANGED**    MOV    DI,OFFSET DAT_02B9    ; (72B5:02B9=0)
  612.         MOV    DI,OFFSET SEQ_FILE_CMDS    ; .SEQ file commands (table)
  613.         MOV    CX,0EH            ; (14 bytes in table)
  614.         REPNE    SCASB            ; Rep zf=0+cx >0 Scan es:[di] for al
  615.         POP    DI
  616.         JNZ    ALTR_W_03A6        ; jump if char not in table
  617. ;**CHANGED**    CMP    BYTE PTR DS:ALTR_J_B_0943+1,0C0H    ; (72B5:0944=0AH)
  618.         CMP    BYTE PTR DS:SMOKING_GUN_0944,0C0H    ; (72B5:0944=0AH)
  619.         JNE    LOC_0354
  620.         JMP    LOC_03EB
  621. LOC_0354:
  622.         CMP    AL,58H            ; 'X' .SEQ repeating structure
  623.         JNE    LOC_0360
  624. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_0943+1,0C0H    ; (72B5:0944=0AH)
  625.         MOV    BYTE PTR DS:SMOKING_GUN_0944,0C0H    ; (72B5:0944=0AH)
  626.         JMP    LOC_03F8
  627. LOC_0360:
  628.         CMP    AL,2FH            ; '/' .SEQ switch character?
  629.         JNE    LOC_03D1        ; if not, jump and try command
  630.         CALL    RD_NXT_BYT_1B1B        ; check for .SEQ file switches
  631.         CMP    AL,61H            ; 'a' 
  632.         JB    LOC_036D
  633.         AND    AL,5FH            ; clear bit-5, strip case
  634. LOC_036D:
  635.         PUSH    DI
  636. ;**CHANGED**    MOV    DI,OFFSET DATA_02C7    ; (=4DH)
  637.         MOV    DI,OFFSET SEQ_FILE_SWITCH
  638.         MOV    CX,9            ; scan for switch character
  639.         REPNE    SCASB            ; Rep zf=0+cx >0 Scan es:[di] for al
  640.         POP    DI
  641.         JNZ    ALTR_W_03A6        ; jump if switch not found
  642.         XCHG    BX,CX
  643.         CALL    RD_NXT_BYT_1B1B
  644.         CMP    BX,7            ; BX is switch index value
  645.         JAE    LOC_039E
  646. ;**CHANGED**    NOT    DATA_2870[BX]        ; (=0FFH)
  647.         NOT    SEQ_SW_BYTES[BX]    ; (=0FFH)
  648.         MOV    AH,0FFH            ; switch ON value
  649.         CMP    AL,2BH            ; '+' is it plus?
  650.         JE    LOC_0393        ; if yes, set switch
  651.         CMP    AL,2DH            ; '-' is it minus?
  652.         JNE    LOC_0397        ; if not minus, jump
  653.         MOV    AH,0            ; switch OFF value
  654. LOC_0393:
  655. ;**CHANGED**    MOV    DATA_2870[BX],AH    ; (=0FFH)
  656.         MOV    SEQ_SW_BYTES[BX],AH    ; write indexed switch value
  657. LOC_0397:
  658.         PUSH    AX
  659.         CALL    SUB_04BE
  660.         POP    AX
  661.         JMP    SHORT LOC_03A3
  662. LOC_039E:
  663. ;**CHANGED**    MOV    BYTE PTR DATA_2870[BX],0    ; (=0FFH)
  664.         MOV    BYTE PTR SEQ_SW_BYTES[BX],0    ; (=0FFH)
  665. LOC_03A3:
  666.         JMP    LOC_0497
  667. ;-----------------------------------------------
  668. ; switch character not found
  669. ALTR_W_03A6:
  670. ;**CHANGED**    MOV    DX,0
  671.         MOV    DX,OLD_W_03A7
  672.         MOV    DI,OFFSET DATA_270C    ; (72B5:270C=30H)
  673.         CALL    CNV_W_2_HX_151D
  674.         MOV    DX,OFFSET MS_ERR_SEQ_26E0    ; (72B5:26E0=55H)
  675.         JMP    LOC_0214
  676. LOC_03B5:
  677.         MOV    CL,AL
  678.         CALL    RD_NXT_BYT_1B1B
  679.         AND    AL,5FH            ; clear bit-5, strip case
  680.         MOV    AH,AL
  681.         MOV    AL,CL
  682.         PUSH    DI
  683.         MOV    DI,OFFSET SEG_REGS_24BB    ; (72B5:24BB=45H)
  684.         MOV    CX,4
  685.         REPNE    SCASW            ; Rep zf=0+cx >0 Scan es:[di] for ax
  686.         POP    DI
  687.         JNZ    ALTR_W_03A6
  688.         ADD    CL,10H
  689.         JMP    SHORT LOC_03F8
  690. ;-----------------------------------------------
  691. LOC_03D1:
  692.         CMP    AL,41H            ; 'A' Assume directive
  693.         JNE    LOC_03DB
  694. ;**CHANGED**    DEC    BYTE PTR DS:ALTR_J_B_0943+1    ; (72B5:0944=0AH)
  695.         DEC    BYTE PTR DS:SMOKING_GUN_0944    ; (72B5:0944=0AH)
  696.         JMP    SHORT LOC_03F8
  697. LOC_03DB:
  698.         CMP    AL,49H            ; 'I' Initial value for IP
  699.         JNE    LOC_03F8
  700.         MOV    DATA_285A,BX        ; (=0)
  701.         MOV    BYTE PTR DATA_286D,0FFH    ; (=0)
  702.         JMP    LOC_049B
  703.  
  704. LOC_03EB:
  705.         CMP    CL,1            ; 7 SEQ commands
  706.         JB    ALTR_W_03A6
  707.         CMP    CL,8
  708.         JA    ALTR_W_03A6
  709.         OR    CL,40H            ; '@' make 41H thru 48H
  710. LOC_03F8:
  711.         MOV    AH,4            ; 4 bytes to store
  712.         CALL    SUB_0F6C
  713. ;**CHANGED**    TEST    BYTE PTR DS:ALTR_J_B_0943+1,0FFH    ; (72B5:0944=0AH)
  714.         TEST    BYTE PTR DS:SMOKING_GUN_0944,0FFH    ; (72B5:0944=0AH)
  715.         JNZ    LOC_0421
  716. ;**CHANGED**    CMP    BX,DS:ALTR_W_03A6+1    ; (72B5:03A7=0)
  717.         CMP    BX,DS:OLD_W_03A7    ; (72B5:03A7=0)
  718.         JAE    LOC_041D
  719.         PUSH    DI
  720. ;**CHANGED**    MOV    DX,DS:ALTR_W_03A6+1    ; (72B5:03A7=0)
  721.         MOV    DX,DS:OLD_W_03A7    ; (72B5:03A7=0)
  722.         MOV    DI,OFFSET DATA_2736    ; (72B5:2736=30H)
  723.         CALL    CNV_W_2_HX_151D
  724.         MOV    DX,OFFSET MS_AD_ORDR_2712    ; (72B5:2712=41H)
  725.         MOV    AH,9
  726.         INT    21H            ; DOS Services  ah=function 09h
  727.                         ;  display char string at ds:dx
  728.         POP    DI
  729. LOC_041D:
  730. ;**CHANGED**    MOV    DS:ALTR_W_03A6+1,BX    ; (72B5:03A7=0)
  731.         MOV    DS:OLD_W_03A7,BX    ; (72B5:03A7=0)
  732. LOC_0421:
  733.         MOV    AX,BX
  734.         STOSW                ; Store ax to es:[di]
  735.         MOV    AL,CL
  736.         STOSB                ; Store al to es:[di]
  737.         MOV    BX,DI
  738.         MOV    AL,0
  739.         STOSB                ; Store al to es:[di]
  740.         CALL    RD_SK_SPTB_1238
  741.         CMP    AL,3BH            ; ';' is it comment delimiter?
  742.         JE    SCAN_2_EOL_04A2        ; if yes, jump
  743. LOC_0433:
  744.         CMP    AL,0DH            ; CR
  745.         JE    LOC_0459
  746.         CMP    AL,0AH            ; LF
  747.         JE    LOC_0459
  748.         CMP    AL,9            ; TAB
  749.         JE    LOC_0459
  750.         MOV    AH,1
  751.         CALL    SUB_0F6C
  752.         CMP    AL,61H            ; 'a' 
  753.         JB    LOC_044A
  754.         AND    AL,5FH            ; clear bit-5, strip case
  755. LOC_044A:
  756.         STOSB                ; Store al to es:[di]
  757.         INC    BYTE PTR [BX]
  758.         CMP    BYTE PTR [BX],7FH
  759.         JE    LOC_0459
  760.         CALL    RD_NXT_BYT_1B1B
  761.         CMP    AL,20H            ; ' '
  762.         JNE    LOC_0433
  763. LOC_0459:
  764.         TEST    BYTE PTR [BX],0FFH
  765.         JZ    LOC_0497
  766.         OR    BYTE PTR [DI-1],80H
  767.         CMP    BYTE PTR [BX],7FH
  768.         JE    LOC_0497
  769.         CMP    AL,0DH            ; CR
  770.         JE    LOC_0497
  771.         CALL    RD_SK_SPTB_1238
  772.         CMP    AL,3BH            ; ';'
  773.         JE    SCAN_2_EOL_04A2
  774. LOC_0472:
  775.         CMP    AL,0DH            ; CR
  776.         JE    LOC_0493
  777.         CMP    AL,9            ; TAB
  778.         JNE    LOC_047C
  779.         MOV    AL,20H            ; ' '
  780. LOC_047C:
  781.         MOV    AH,1
  782.         CALL    SUB_0F6C
  783.         STOSB                ; Store al to es:[di]
  784.         OR    BYTE PTR [BX],80H
  785.         INC    BYTE PTR [BX]
  786.         CMP    BYTE PTR [BX],0FFH
  787.         JE    LOC_0493
  788.         CALL    RD_NXT_BYT_1B1B
  789.         CMP    AL,3BH            ; ';'
  790.         JNE    LOC_0472
  791. LOC_0493:
  792.         OR    BYTE PTR [DI-1],80H
  793. LOC_0497:
  794.         CMP    AL,0DH            ; CR
  795.         JE    LOC_04B1
  796. LOC_049B:
  797.         CALL    RD_SK_SPTB_1238
  798.         CMP    AL,3BH            ; ';'
  799.         JNE    LOC_04AD
  800. SCAN_2_EOL_04A2:
  801.         CALL    RD_SK_SPTB_1238
  802.         CMP    AL,1AH            ; Ctrl-Z
  803.         JE    LOC_04BB
  804.         CMP    AL,0DH            ; CR
  805.         JNE    SCAN_2_EOL_04A2
  806. LOC_04AD:
  807.         CMP    AL,0DH            ; CR
  808.         JNE    LOC_04BB
  809. LOC_04B1:
  810.         CALL    RD_NXT_BYT_1B1B
  811.         CMP    AL,0AH            ; LF
  812.         JNE    LOC_04BB
  813.         JMP    LOC_0329
  814. LOC_04BB:
  815.         JMP    ALTR_W_03A6
  816. SUB_02D0    ENDP
  817.  
  818.  
  819. ;==========================================================================
  820. ;                   SUBROUTINE
  821. ;==========================================================================
  822.  
  823. SUB_04BE    PROC    NEAR
  824.         MOV    AH,4
  825.         CALL    SUB_0F6C
  826.         MOV    AX,CX
  827.         STOSW                ; Store ax to es:[di]
  828.         MOV    AL,BL
  829.         OR    AL,20H            ; ' '
  830. ;**CHANGED**    TEST    BYTE PTR DATA_2870[BX],0FFH    ; (=0FFH)
  831.         TEST    BYTE PTR SEQ_SW_BYTES[BX],0FFH    ; (=0FFH)
  832.         JZ    LOC_04D3
  833.         OR    AL,10H
  834. LOC_04D3:
  835.         MOV    AH,0
  836.         STOSW                ; Store ax to es:[di]
  837.         RETN
  838. SUB_04BE    ENDP
  839.  
  840.  
  841. ;==========================================================================
  842. ;                   SUBROUTINE
  843. ;==========================================================================
  844.  
  845. SUB_04D7    PROC    NEAR
  846.         CALL    RD_SK_SPTB_1238
  847.         CMP    AL,3BH            ; ';'
  848.         JNE    LOC_04E1
  849.         POP    AX
  850.         JMP    SHORT SCAN_2_EOL_04A2
  851. LOC_04E1:
  852.         XOR    BX,BX
  853.         CMP    AL,26H            ; '&'
  854.         JE    LOC_04EE
  855. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_0943+1,0    ; (72B5:0944=0AH)
  856.         MOV    BYTE PTR DS:OLD_JUMP_0944,0FFH    ; don't take jump
  857.         JMP    SHORT LOC_04F6
  858. LOC_04EE:
  859.         CALL    RD_SK_SPTB_1238
  860.         JMP    SHORT LOC_04F6
  861. LOC_04F3:
  862.         CALL    RD_NXT_BYT_1B1B
  863. LOC_04F6:
  864.         MOV    AH,AL
  865.  
  866.                         ; ****** Error, 'A' s/b 'a' ******
  867. ;**ERROR**    CMP    AL,41H            ; 'A'  -typographical error-
  868.         CMP    AL,61H            ; 'a'
  869.         JB    LOC_04FE
  870.         AND    AL,5FH            ; clear bit-5, strip case
  871. LOC_04FE:
  872.         SUB    AL,30H            ; '0'
  873.         JC    LOC_0521
  874.         CMP    AL,0AH            ; number TEN
  875.         JB    LOC_0508
  876.         SUB    AL,7            ; ASCII HEX conversion
  877. LOC_0508:
  878.         CMP    AL,0FH
  879.         JA    LOC_0521
  880.         MOV    CX,4
  881.  
  882. LOCLOOP_050F:
  883.         ADD    BX,BX
  884.         JC    LOC_051B
  885.         LOOP    LOCLOOP_050F        ; Loop if cx > 0
  886.  
  887.         MOV    AH,0
  888.         ADD    BX,AX
  889.         JNC    LOC_04F3
  890. LOC_051B:
  891.         MOV    DX,OFFSET MS_HXVL_ER_2771    ; (72B5:2771=48H)
  892.         JMP    LOC_0214
  893. LOC_0521:
  894.         CMP    AH,20H            ; ' '
  895.         JE    LOC_RET_0539
  896.         CMP    AH,9                    ; Tab
  897.         JE    LOC_RET_0539
  898.         AND    AH,5FH            ; clear bit-5, strip case
  899.         CMP    AH,48H            ; 'H'
  900.         JE    LOC_RET_0539
  901.         CMP    AH,1AH                  ; EOF
  902.         STC                ; Set carry flag
  903.         JNZ    LOC_051B                ; read next char
  904.  
  905. LOC_RET_0539:
  906.         RETN
  907. SUB_04D7    ENDP
  908.  
  909.  
  910. ;==========================================================================
  911. ;                   SUBROUTINE
  912. ;==========================================================================
  913.  
  914. SUB_053A    PROC    NEAR
  915.         CALL    SCAN_SPTAB_0E3F
  916.         JNZ    LOC_0548
  917.         CMP    DI,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  918.         JE    LOC_0563
  919.         MOV    SI,OFFSET DATA_2150_CON    ; (72B5:2150=43H)
  920. LOC_0548:
  921.         MOV    AX,2901H
  922.         INT    21H            ; DOS Services  ah=function 29h
  923.                         ;  parse filenam @ds:si FCBes:di
  924.         OR    AL,AL
  925.         JNZ    LOC_0558
  926.         CMP    BYTE PTR [DI+1],20H    ; ' '
  927.         JE    LOC_0558
  928.         RETN
  929. LOC_0558:
  930.         MOV    SI,DI
  931.         CALL    SUB_06B1
  932.         MOV    DX,OFFSET MS_FILE_SPEC_ER    ; (72B5:27A5=20H)
  933.         JMP    LOC_0214
  934. LOC_0563:
  935.         MOV    WORD PTR FCB3_NAME_2A10,20H    ; (72B5:2A10=646EH)
  936.         JMP    LOC_0226
  937. SUB_053A    ENDP
  938.  
  939.  
  940. ;==========================================================================
  941. ;                   SUBROUTINE
  942. ;==========================================================================
  943.  
  944. SUB_056C    PROC    NEAR
  945.         MOV    DI,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  946.         CALL    SUB_053A
  947.  
  948. ;==== External Entry into Subroutine ======================================
  949.  
  950. SUB_0572:
  951.         MOV    DATA_2915,DATA_2E9E_E    ; (=0) (=0)
  952.         MOV    AL,0
  953. ;**CHANGED**    MOV    DS:ALTR_B_0F47+1,AL    ; (72B5:0F48=0)
  954.         MOV    DS:OLD_B_0F48,AL    ; (72B5:0F48=0)
  955.         MOV    BYTE PTR DATA_2861,1    ; (=0)
  956.         MOV    DATA_286D,AL        ; (=0)
  957.         MOV    DATA_285A,100H        ; (=0)
  958.         RETN
  959. SUB_056C    ENDP
  960.  
  961.  
  962. ;==========================================================================
  963. ;                   SUBROUTINE
  964. ;==========================================================================
  965.  
  966. SUB_058C    PROC    NEAR
  967. ;**CHANGED**    MOV    DI,OFFSET DATA_298B    ; 132-byte line buffer
  968.         MOV    DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  969.         PUSH    CX
  970.         PUSH    SI
  971.         PUSH    DI
  972.         MOV    DX,AX
  973.         CALL    CNV_W_2_HX_151D
  974.         POP    DI
  975.         XCHG    SI,DI
  976.         MOV    CX,4
  977.  
  978. LOCLOOP_059D:
  979.         LODSB                ; String [si] to al
  980.         CALL    WR_CHR_AL_05C1
  981.         LOOP    LOCLOOP_059D        ; Loop if cx > 0
  982.  
  983.         POP    SI
  984.         POP    CX
  985.         RETN
  986. SUB_058C    ENDP
  987.  
  988.  
  989. ;==========================================================================
  990. ;                   SUBROUTINE
  991. ;==========================================================================
  992.  
  993. SUB_05A6    PROC    NEAR
  994.         MOV    AX,DX
  995.         PUSH    DI
  996.         CALL    SUB_058C
  997.         POP    DI
  998.         RETN
  999. SUB_05A6    ENDP
  1000.  
  1001.  
  1002. ;==========================================================================
  1003. ;                   SUBROUTINE
  1004. ;==========================================================================
  1005.  
  1006. WR_CRLF_05AE    PROC    NEAR
  1007.         MOV    AL,0DH            ; CR
  1008.         CALL    WR_CHR_AL_05C1
  1009.         MOV    AL,0AH            ; LF
  1010. ;***TEST1    DB    0A9H            ; TEST - (JMP SHORT LOC_05C1)
  1011.         JMP    SHORT WR_CHR_AL_05C1
  1012.  
  1013. ;==== External Entry into Subroutine ======================================
  1014.  
  1015. WR_L_05B6:
  1016.         MOV    AL,4CH            ; 'L'
  1017. ;***TEST2    DB    0A9H            ; TEST - (JMP SHORT LOC_05C1)
  1018.         JMP    SHORT WR_CHR_AL_05C1
  1019.  
  1020. ;==== External Entry into Subroutine ======================================
  1021.  
  1022. WR_SEMI_05B9:
  1023. LOC_05B9:
  1024.         MOV    AL,3BH            ; ';'
  1025. ;***TEST3    DB    0A9H            ; TEST - (JMP SHORT LOC_05C1)
  1026.         JMP    SHORT WR_CHR_AL_05C1
  1027.  
  1028. ;==== External Entry into Subroutine ======================================
  1029.  
  1030. SUB_05BC:
  1031.         MOV    AL,9            ; TAB
  1032. ;***TEST4    DB    0A9H            ; TEST - (JMP SHORT LOC_05C1)
  1033.         JMP    SHORT WR_CHR_AL_05C1
  1034.  
  1035. ;==== External Entry into Subroutine ======================================
  1036.  
  1037. SUB_05BF:
  1038.         MOV    AL,20H            ; ' '
  1039.  
  1040. ;==== External Entry into Subroutine ======================================
  1041.  
  1042. WR_CHR_AL_05C1:
  1043. ;**CHANGED**    TEST    BYTE PTR DATA_2870,0FFH    ; (=0FFH)
  1044.         TEST    BYTE PTR SW_O_OUTPUT_LST,0FFH ; (=0FFH)
  1045.         JZ    LOC_RET_0600
  1046.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  1047.         JE    LOC_RET_0600
  1048.         PUSH    AX
  1049.         PUSH    DI
  1050.         MOV    DI,OFFSET DATA_2848    ; (=0)
  1051.         INC    BYTE PTR [DI]
  1052.         CMP    AL,9
  1053.         JNE    LOC_05E0
  1054.         ADD    BYTE PTR [DI],7
  1055.         AND    BYTE PTR [DI],0F8H    ; clear low 3-bits
  1056. LOC_05E0:
  1057.         MOV    DI,DATA_2881        ; (=0)
  1058.         AND    AL,7FH            ; clear bit-7
  1059.         STOSB                ; Store al to es:[di]
  1060.         CMP    DI,DATA_2E9E_E        ; (=0)
  1061.         JNE    LOC_05F0
  1062.         CALL    SUB_062D
  1063. LOC_05F0:
  1064.         MOV    DATA_2881,DI        ; (=0)
  1065.         INC    DATA_2849        ; (=0)
  1066.         JNZ    LOC_05FE
  1067.         INC    DATA_284B        ; (=0)
  1068. LOC_05FE:
  1069.         POP    DI
  1070.         POP    AX
  1071.  
  1072. LOC_RET_0600:
  1073.         RETN
  1074. WR_CRLF_05AE    ENDP
  1075.  
  1076.  
  1077. ;==========================================================================
  1078. ;                   SUBROUTINE
  1079. ;==========================================================================
  1080.  
  1081. WR_STRING_0601    PROC    NEAR
  1082. LOC_0601:
  1083.         LODSB                ; String [si] to al
  1084.         TEST    AL,7FH
  1085.         JZ    LOC_RET_060D
  1086.         CALL    WR_CHR_AL_05C1
  1087.         AND    AL,80H            ; clear all but bit-7
  1088.         JZ    LOC_0601
  1089.  
  1090. LOC_RET_060D:
  1091.         RETN
  1092. WR_STRING_0601    ENDP
  1093.  
  1094.  
  1095. ;==========================================================================
  1096. ;                   SUBROUTINE
  1097. ;==========================================================================
  1098.  
  1099. SUB_060E    PROC    NEAR
  1100.         PUSH    AX
  1101.  
  1102. LOCLOOP_060F:
  1103.         MOV    AH,DATA_2848        ; (=0)
  1104.         AND    AH,7            ; clear all but 3 LSB's
  1105.         MOV    AL,7
  1106.         SUB    AL,AH
  1107.         CBW                ; Convrt byte to word
  1108.         CMP    CX,AX
  1109.         JBE    LOC_0626
  1110.         SUB    CX,AX
  1111.         CALL    SUB_05BC
  1112.         JMP    SHORT LOC_0629
  1113. LOC_0626:
  1114.         CALL    SUB_05BF
  1115. LOC_0629:
  1116.         LOOP    LOCLOOP_060F        ; Loop if cx > 0
  1117.  
  1118.         POP    AX
  1119.         RETN
  1120. SUB_060E    ENDP
  1121.  
  1122.  
  1123. ;==========================================================================
  1124. ;                   SUBROUTINE
  1125. ;==========================================================================
  1126.  
  1127. SUB_062D    PROC    NEAR
  1128.         PUSH    DX
  1129.         MOV    DX,OFFSET DTA4_2C9E    ; (72B5:2C9E=0)
  1130.         MOV    AH,1AH
  1131.         INT    21H            ; DOS Services  ah=function 1Ah
  1132.                         ;  set DTA to ds:dx
  1133.         XCHG    DX,DI
  1134.         MOV    DX,OFFSET FCB4_2A34    ; (72B5:2A34=0DH)
  1135.         MOV    AH,15H
  1136.         INT    21H            ; DOS Services  ah=function 15h
  1137.                         ;  sequent file write FCB @ds:dx
  1138.         OR    AL,AL
  1139.         POP    DX
  1140.         JNZ    LOC_0644
  1141.         RETN
  1142. LOC_0644:
  1143.         MOV    DX,OFFSET MS_DSKFULL_26AB    ; (72B5:26AB=49H)
  1144.         JMP    LOC_0214
  1145. SUB_062D    ENDP
  1146.  
  1147.  
  1148. ;==========================================================================
  1149. ;                   SUBROUTINE
  1150. ;==========================================================================
  1151.  
  1152. SUB_064A    PROC    NEAR
  1153.  
  1154.         TEST    OLD_RET_NOP_064A,0FFH
  1155.         JNZ    LOC_064B        ; jump if old NOP condition
  1156.  
  1157. ALTR_OPB_064A:                    ; Altered code -- RETN or NOP
  1158.         RETN
  1159. SUB_064A    ENDP
  1160.  
  1161. LOC_064B:
  1162. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_OPB_064A+0,0C3H    ; (72B5:064A=0C3H)
  1163.         MOV    OLD_RET_NOP_064A,0    ; (=0C3H) RETN
  1164.         MOV    AL,1AH
  1165.         CALL    WR_CHR_AL_05C1
  1166.         MOV    BX,DATA_2881        ; (=0)
  1167.         SUB    BX,OFFSET DTA4_2C9E    ; (72B5:2C9E=0)
  1168.         PUSHF
  1169.         JZ    LOC_0663
  1170.         CALL    SUB_062D
  1171. LOC_0663:
  1172.         POPF
  1173.         JZ    LOC_0677
  1174.         MOV    AX,200H
  1175.         SUB    AX,BX
  1176.         JZ    LOC_0677
  1177.         SUB    WORD PTR FCB4_FILSZ_2A44,AX    ; (72B5:2A44=646FH)
  1178.         JNC    LOC_0677
  1179.         DEC    WORD PTR FCB4_FLSZH_2A46    ; (72B5:2A46=2065H)
  1180. LOC_0677:
  1181.         MOV    DX,OFFSET FCB4_2A34    ; (72B5:2A34=0DH)
  1182.         MOV    AH,10H
  1183.         INT    21H            ; DOS Services  ah=function 10h
  1184.                         ;  close file, FCB @ ds:dx
  1185.         OR    AL,AL
  1186.         JNZ    LOC_06AB
  1187.         MOV    DX,OFFSET MS_BYT_N_OT_FLE    ; (72B5:278E=42H)
  1188.         MOV    AH,9
  1189.         INT    21H            ; DOS Services  ah=function 09h
  1190.                         ;  display char string at ds:dx
  1191. ;**CHANGED**    MOV    DI,OFFSET DATA_298B    ; 132-byte line buffer
  1192.         MOV    DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  1193.         PUSH    DI            ; save as pointer to display buf
  1194.         MOV    DX,DATA_284B        ; data for HEX ASCII conversion
  1195.         OR    DX,DX            ; test for zero
  1196.         JZ    LOC_0698
  1197.         CALL    CNV_W_2_HX_151D
  1198. LOC_0698:
  1199.         MOV    DX,DATA_2849        ; data for HEX ASCII conversion
  1200.         CALL    CNV_W_2_HX_151D
  1201.         MOV    AX,2448H        ; 'H$' add terminal character
  1202.         STOSW                ; Store ax to es:[di]
  1203.         POP    DX            ; get pointer to display buf
  1204.         MOV    AH,9
  1205.         INT    21H            ; DOS Services  ah=function 09h
  1206.                         ;  display char string at ds:dx
  1207.         JMP    SHORT LOC_06FB
  1208.     ;***    DB    90H
  1209. LOC_06AB:
  1210.         MOV    DX,OFFSET MS_NOCLOSE_265F    ; (72B5:265F=0DH)
  1211.         JMP    LOC_0214
  1212.  
  1213. ;==========================================================================
  1214. ;                   SUBROUTINE
  1215. ;==========================================================================
  1216.  
  1217. SUB_06B1    PROC    NEAR
  1218.         PUSH    CX
  1219.         LODSB                ; String [si] to al
  1220.         CMP    AL,0
  1221.         JE    LOC_06C6
  1222.         CMP    BYTE PTR [SI],20H    ; ' '
  1223.         JE    LOC_06C6
  1224.         OR    AL,40H            ; '@'
  1225.         CALL    DSPY_CHR_AL_070
  1226.         MOV    AL,3AH            ; ':'
  1227.         CALL    DSPY_CHR_AL_070
  1228. LOC_06C6:
  1229.         LODSB                ; String [si] to al
  1230.         MOV    CX,8
  1231.         CMP    AL,20H            ; ' '
  1232.         JNE    LOC_06D4
  1233.         CALL    DSPY_DOT_0703
  1234.         JMP    SHORT LOC_06EA
  1235.  
  1236. LOCLOOP_06D3:
  1237.         LODSB                ; String [si] to al
  1238. LOC_06D4:
  1239.         CALL    SUB_06EC
  1240.         LOOP    LOCLOOP_06D3        ; Loop if cx > 0
  1241.  
  1242.         CMP    BYTE PTR [SI],20H    ; ' '
  1243.         JE    LOC_06EA
  1244.         MOV    CX,3
  1245.         CALL    DSPY_DOT_0703
  1246.  
  1247. LOCLOOP_06E4:
  1248.         LODSB                ; String [si] to al
  1249.         CALL    SUB_06EC
  1250.         LOOP    LOCLOOP_06E4        ; Loop if cx > 0
  1251.  
  1252. LOC_06EA:
  1253.         POP    CX
  1254.         RETN
  1255. SUB_06B1    ENDP
  1256.  
  1257.  
  1258. ;==========================================================================
  1259. ;                   SUBROUTINE
  1260. ;==========================================================================
  1261.  
  1262. SUB_06EC    PROC    NEAR
  1263.         CMP    AL,20H            ; ' '
  1264.         JNE    LOC_0708
  1265.         RETN
  1266.  
  1267. ;==== External Entry into Subroutine ======================================
  1268. ;
  1269. ;         Buffered Keyboard Input
  1270.  
  1271. SUB_06F1:
  1272.         MOV    DX,OFFSET KBD_BUF_2968    ; (72B5:2968=20H)
  1273.         MOV    AH,0AH
  1274.         INT    21H            ; DOS Services  ah=function 0Ah
  1275.                         ;  get keybd line, put at ds:dx
  1276.         MOV    SI,OFFSET DATA_296A    ; Keyboard line buffer
  1277.  
  1278. ;==== External Entry into Subroutine ======================================
  1279.  
  1280. DSPY_CRLF_06FB:
  1281. LOC_06FB:
  1282.         MOV    AL,0DH            ; CR
  1283.         CALL    DSPY_CHR_AL_070
  1284.         MOV    AL,0AH            ; LF
  1285. ;***TEST5    DB    0A9H            ; TEST skips next instruction
  1286.         JMP    SHORT DSPY_CHR_AL_070
  1287.  
  1288. ;==== External Entry into Subroutine ======================================
  1289.  
  1290. DSPY_DOT_0703:
  1291.         MOV    AL,2EH            ; '.'
  1292. ;***TEST6    DB    0A9H            ; TEST skips next instruction
  1293. ;        JMP    SHORT DSPY_CHR_AL_070
  1294. ;SUB_0706:
  1295. ;        MOV    AL,20H            ; ' '
  1296. SUB_06EC    ENDP
  1297.  
  1298.  
  1299. ;==========================================================================
  1300. ;                   SUBROUTINE
  1301. ;==========================================================================
  1302.  
  1303. DSPY_CHR_AL_070    PROC    NEAR
  1304. LOC_0708:
  1305.         PUSH    AX
  1306.         PUSH    DX
  1307.         AND    AL,7FH            ; clear bit-7
  1308.         XCHG    AX,DX
  1309.         MOV    AH,2
  1310.         INT    21H            ; DOS Services  ah=function 02h
  1311.                         ;  display char dl
  1312.         POP    DX
  1313.         POP    AX
  1314.         RETN
  1315. DSPY_CHR_AL_070    ENDP
  1316.  
  1317.  
  1318. ;==========================================================================
  1319. ;                   SUBROUTINE
  1320. ;==========================================================================
  1321.  
  1322. SUB_0714    PROC    NEAR
  1323.         CMP    BYTE PTR DATA_2861,2    ; (=0)
  1324.         JE    LOC_0722
  1325.  
  1326. ;==== External Entry into Subroutine ======================================
  1327.  
  1328. SUB_071B:
  1329.         CALL    SUB_02D0
  1330.         MOV    DATA_288F,DI        ; (=0)
  1331. LOC_0722:
  1332.         MOV    BYTE PTR DATA_286E,0    ; (=0)
  1333.  
  1334.                         ; 24H s/b LOC_RET_10A7-SUB_1081-2
  1335. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_1081+1,24H    ; (72B5:1082=24H) '$'
  1336. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_1081+1,LOC_RET_10A7-SUB_1081-2
  1337.         MOV    BYTE PTR DS:OLD_JUMP_1082,0    ;take jump
  1338.         MOV    BX,DATA_2893        ; (=0)
  1339.         TEST    BYTE PTR [BX],80H
  1340.         JNZ    LOC_073A
  1341.         MOV    BYTE PTR DATA_2888,0FFH    ; (=0)
  1342. LOC_073A:
  1343.         CALL    SUB_0C37
  1344. ;**CHANGED**    MOV    BYTE PTR DATA_2870,0FFH    ; (=0FFH)
  1345.         MOV    BYTE PTR SW_O_OUTPUT_LST,0FFH ; (=0FFH)
  1346.         JNC    LOC_0747
  1347.         JMP    LOC_0223
  1348. LOC_0747:
  1349.         MOV    BP,DATA_2893        ; (=0)
  1350.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  1351.         JNE    LOC_075C
  1352.         MOV    DX,OFFSET MS_BLDG_REF_TBL    ; (72B5:2808=42H)
  1353.         MOV    AH,9
  1354.         INT    21H            ; DOS Services  ah=function 09h
  1355.                         ;  display char string at ds:dx
  1356.         JMP    SHORT LOC_0799
  1357.     ;***    DB    90H
  1358. LOC_075C:
  1359.         CALL    SUB_0E4C
  1360.         CALL    SUB_0B70
  1361.         CALL    SUB_0C2E
  1362.         JNC    LOC_076A
  1363.         JMP    LOC_0214
  1364. LOC_076A:
  1365. ;**CHANGED**    TEST    BYTE PTR DATA_2878,0FFH    ; (=0FFH)
  1366.         TEST    BYTE PTR SW_M_MACRO_LIST,0FFH ; (=0FFH)
  1367.         JZ    LOC_0789
  1368.         MOV    SI,OFFSET MAC_PATCH83    ; (72B5:24E0=0)
  1369. LOC_0774:
  1370.         LODSB                ; String [si] to al
  1371.         CMP    AL,0FFH
  1372.         JE    LOC_0789
  1373.         CMP    AL,1
  1374.         JNE    LOC_0782
  1375.         CALL    WR_STRING_0601
  1376.         JMP    SHORT LOC_0774
  1377. LOC_0782:
  1378.         LODSB                ; String [si] to al
  1379.         TEST    AL,80H
  1380.         JNZ    LOC_0774
  1381.         JMP    SHORT LOC_0782
  1382. LOC_0789:
  1383.         MOV    SI,OFFSET MN_DOT_RADIX_16    ; (72B5:25C5=2EH)
  1384. ;**CHANGED**    TEST    BYTE PTR RAD16_FLAG_2877,0FFH    ; (72B5:2877=0FFH)
  1385.         TEST    BYTE PTR SW_H_HEX_SUFFIX,0FFH    ; (72B5:2877=0FFH)
  1386.         JNZ    LOC_0796
  1387.         MOV    SI,OFFSET MN_CRLF_INIT_VL    ; (72B5:25D0=4CH)
  1388. LOC_0796:
  1389.         CALL    WR_STRING_0601
  1390. LOC_0799:
  1391.         CMP    BYTE PTR DATA_2887,80H    ; (=0)
  1392.         JNE    LOC_07A5
  1393.         MOV    BYTE PTR DATA_2887,0    ; (=0)
  1394. LOC_07A5:
  1395.         MOV    SI,DATA_2889        ; (=0)
  1396.         CMP    SI,DATA_288F        ; (=0)
  1397.         JB    LOC_07B2
  1398. LOC_07AF:
  1399.         JMP    LOC_088F
  1400. LOC_07B2:
  1401.         MOV    AX,DATA_2858        ; (=0)
  1402.         CMP    AX,[SI]
  1403.         JB    LOC_07AF
  1404.         MOV    CX,SI
  1405.         LODSW                ; String [si] to ax
  1406.         LODSB                ; String [si] to al
  1407.         PUSH    AX
  1408.         LODSB                ; String [si] to al
  1409. ;**CHANGED**    MOV    DS:ALTR_W_1123+1,SI    ; (72B5:1124=0)
  1410.         MOV    DS:OLD_W_1124,SI    ; (72B5:1124=0)
  1411.         AND    AL,7FH            ; clear bit-7
  1412.         MOV    AH,0
  1413.         ADD    SI,AX
  1414.         POP    AX
  1415.         MOV    DATA_2889,SI        ; (=0)
  1416.         CMP    AL,9
  1417.         JNE    LOC_0817
  1418.         CMP    SI,DATA_288F        ; (=0)
  1419.         JAE    LOC_07FE
  1420.         TEST    BYTE PTR [SI+2],40H    ; '@'
  1421.         JZ    LOC_07FE
  1422.         MOV    SI,CX
  1423. ;**CHANGED**    MOV    DS:ALTR_W_0802+1,SI    ; (72B5:0803=0)
  1424.         MOV    DS:OLD_W_0803,SI    ; (72B5:0803=0)
  1425. ;**CHANGED**    MOV    DS:ALTR_W_08E3+1,SI    ; (72B5:08E4=0)
  1426.         MOV    DS:OLD_W_08E4,SI    ; (72B5:08E4=0)
  1427. LOC_07E8:
  1428.         ADD    SI,3
  1429.         LODSB                ; String [si] to al
  1430.         AND    AL,7FH            ; clear bit-7
  1431.         MOV    AH,0
  1432.         ADD    SI,AX
  1433.         CMP    SI,DATA_288F        ; (=0)
  1434.         JAE    LOC_07FE
  1435.         TEST    BYTE PTR [SI+2],40H    ; '@'
  1436.         JNZ    LOC_07E8
  1437. LOC_07FE:
  1438.         MOV    DATA_2889,SI        ; (=0)
  1439.  
  1440. ALTR_W_0802:                    ; Altered code
  1441. ;**CHANGED**    MOV    DI,0
  1442.         MOV    DI,OLD_W_0803
  1443.         OR    DI,DI
  1444.         JZ    LOC_0811
  1445.         MOV    BYTE PTR DATA_291B,0FFH    ; (=0)
  1446.         JMP    SHORT LOC_0888
  1447.     ;***    DB    90H
  1448. LOC_0811:
  1449.         MOV    DX,OFFSET MS_STR_SEQ_273E    ; (72B5:273E=55H)
  1450.         JMP    LOC_0214
  1451. LOC_0817:
  1452.         TEST    AL,20H            ; ' ' space
  1453.         JNZ    LOC_0851
  1454.         CMP    AL,0AH            ; number TEN
  1455.         JB    LOC_0866
  1456. LOC_081F:
  1457.         CMP    SI,DATA_288F        ; (=0)
  1458.         JAE    LOC_0888
  1459.         LODSW                ; String [si] to ax
  1460.         MOV    CX,AX
  1461.         MOV    DATA_2885,AX        ; (=0)
  1462.         LODSB                ; String [si] to al
  1463.         PUSH    AX
  1464.         LODSB                ; String [si] to al
  1465.         AND    AL,7FH            ; clear bit-7
  1466.         MOV    AH,0
  1467.         ADD    SI,AX
  1468.         POP    AX
  1469.         SUB    AL,10H
  1470.         JC    LOC_088C
  1471.         CMP    AL,3
  1472.         JA    LOC_088C
  1473.         SHL    AL,1            ; Shift w/zeros fill
  1474.         MOV    AH,0
  1475. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_1081+1,AH    ; (72B5:1082=24H)
  1476.         MOV    BYTE PTR DS:OLD_JUMP_1082,0FFH    ;don't take jump
  1477.         MOV    BX,AX
  1478.         MOV    DATA_2823[BX],CX    ; 4-words indexed
  1479.         MOV    DATA_2889,SI        ; (=0)
  1480.         JMP    SHORT LOC_081F
  1481. LOC_0851:
  1482.         MOV    BL,AL
  1483.         AND    BL,0CFH            ; clear bits 4 & 5
  1484.         MOV    BH,0
  1485.         TEST    AL,10H            ; check if bit-4 is zero
  1486.         MOV    AL,BH
  1487.         JZ    LOC_0860
  1488.         NOT    AL
  1489. LOC_0860:
  1490. ;**CHANGED**    MOV    DATA_2870[BX],AL    ; (=0FFH)
  1491.         MOV    SEQ_SW_BYTES[BX],AL    ; (=0FFH)
  1492.         JMP    SHORT LOC_0888
  1493. LOC_0866:
  1494.         MOV    DATA_2887,AL        ; (=0)
  1495.         CMP    AL,6
  1496.         JNE    LOC_0872
  1497.         MOV    BYTE PTR DATA_2887,80H    ; (=0)
  1498. LOC_0872:
  1499.         MOV    BYTE PTR DATA_291B,0    ; (=0)
  1500.         MOV    DATA_2919,0        ; (=0)
  1501.         MOV    BYTE PTR DATA_2856,0    ; (=0)
  1502. ;**CHANGED**    MOV    AX,DS:ALTR_W_0802+1    ; (72B5:0803=0)
  1503.         MOV    AX,DS:OLD_W_0803    ; (72B5:0803=0)
  1504. ;**CHANGED**    MOV    DS:ALTR_W_08E3+1,AX    ; (72B5:08E4=0)
  1505.         MOV    DS:OLD_W_08E4,AX    ; (72B5:08E4=0)
  1506. LOC_0888:
  1507.         LODSW                ; String [si] to ax
  1508.         MOV    DATA_2885,AX        ; (=0)
  1509. LOC_088C:
  1510.         JMP    LOC_07A5
  1511. LOC_088F:
  1512.         XOR    AX,AX
  1513. ;**CHANGED**    MOV    DS:ALTR_W_09E2+1,AX    ; (72B5:09E3=0FFFFH)
  1514.         MOV    DS:OLD_W_09E3,AX    ; (72B5:09E3=0FFFFH)
  1515.         MOV    DATA_2854,AX        ; (Tab counter ?)
  1516.         MOV    DATA_2846,AL        ; (=0)
  1517.         MOV    DATA_2847,AL        ; (=0)
  1518.         MOV    DATA_285D,AL        ; (=0)
  1519.         MOV    DATA_285C,AL        ; (=0)
  1520.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  1521.         JE    LOC_08C8
  1522.         CALL    SUB_1081
  1523. LOC_08AD:
  1524.         TEST    BYTE PTR DATA_2888,0FFH    ; (=0)
  1525.         JZ    LOC_08C5
  1526.         MOV    AX,[BP+1]
  1527.         CMP    AX,DATA_2858        ; (=0)
  1528.         JA    LOC_08C5
  1529.         CALL    SUB_0FA8
  1530.         CALL    SUB_10A8
  1531.         JZ    LOC_08AD
  1532. LOC_08C5:
  1533.         CALL    SUB_05BC
  1534.  
  1535. LOC_08C8:                    ; 0AH s/b LOC_094F-ALTR_J_B_0943-2
  1536. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_0943+1,0AH    ; (72B5:0944=0AH)
  1537. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_0943+1,LOC_094F-ALTR_J_B_0943-2
  1538.         MOV    BYTE PTR DS:OLD_JUMP_0944,0    ; take jump
  1539.         TEST    BYTE PTR DATA_2856,0FFH    ; (=0)
  1540.         JNZ    LOC_0917
  1541.         TEST    BYTE PTR DATA_291B,0FFH    ; (=0)
  1542.         JZ    LOC_0917
  1543.         TEST    DATA_2919,0FFFFH    ; (=0)
  1544.         JNZ    LOC_0917
  1545.  
  1546. ALTR_W_08E3:                    ; Altered code
  1547. ;**CHANGED**    MOV    SI,0
  1548.         MOV    SI,OLD_W_08E4
  1549. LOC_08E6:
  1550.         LEA    SI,[SI+3]        ; Load effective addr
  1551.         LODSB                ; String [si] to al
  1552.         AND    AL,7FH            ; clear bit-7
  1553.         MOV    AH,0
  1554.         ADD    SI,AX
  1555.         CMP    SI,DATA_288F        ; (=0)
  1556.         JAE    LOC_08FC
  1557.         TEST    BYTE PTR [SI+2],40H    ; '@'
  1558.         JNZ    LOC_0902
  1559. LOC_08FC:
  1560. ;**CHANGED**    MOV    SI,DS:ALTR_W_0802+1    ; (72B5:0803=0)
  1561.         MOV    SI,DS:OLD_W_0803    ; (72B5:0803=0)
  1562.         JMP    SHORT LOC_08E6
  1563. LOC_0902:
  1564. ;**CHANGED**    MOV    DS:ALTR_W_08E3+1,SI    ; (72B5:08E4=0)
  1565.         MOV    DS:OLD_W_08E4,SI    ; (72B5:08E4=0)
  1566.         LODSW                ; String [si] to ax
  1567.         MOV    DATA_2919,AX        ; (=0)
  1568.         LODSB                ; String [si] to al
  1569.         AND    AL,3FH            ; clear bits 6 & 7
  1570.         MOV    DATA_2887,AL        ; (=0)
  1571.         LODSB                ; String [si] to al
  1572.         AND    AL,7FH            ; clear bit-7
  1573.         MOV    AH,0
  1574.         ADD    SI,AX
  1575. LOC_0917:
  1576.         MOV    BYTE PTR DATA_286E,1    ; (=0)
  1577. ;**CHANGED**    MOV    DI,OFFSET DATA_298B    ; 132-byte line buffer
  1578.         MOV    DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  1579.         MOV    BYTE PTR [DI],80H
  1580.         CALL    SUB_165A
  1581.         MOV    BH,0
  1582.         MOV    DATA_2848,BH        ; (=0)
  1583.         MOV    BL,DATA_2887        ; (=0)
  1584.         AND    BL,7FH            ;*** mask low 7-bits ERROR?
  1585.         ADD    BX,BX
  1586.         CALL    WORD PTR DATA_1BA9[BX]    ;*(72B5:1BA9=1277H)  9 entries
  1587.         MOV    AH,0BH
  1588.         INT    21H            ; DOS Services  ah=function 0Bh
  1589.                         ;  if keybd char available,al=FF
  1590.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  1591.         JE    LOC_0984
  1592.  
  1593. ALTR_J_B_0943:                    ; Altered code
  1594. ;**CHANGED**    JMP    SHORT LOC_094F
  1595.         TEST    BYTE PTR OLD_JUMP_0944,0FFH ; test for jump
  1596.         JZ    LOC_094F        ; if zero, take jump
  1597.  
  1598. ALTR_W_0945:                    ; Altered code
  1599. ;**CHANGED**    MOV    DX,0
  1600.         MOV    DX,OLD_W_0946        ;(immediate) operand word
  1601.         MOV    AX,3B09H        ; "TAB Semicolon"
  1602.         STOSW                ; Store ax to es:[di]
  1603.         CALL    CNV_W_2_HX_151D
  1604. LOC_094F:
  1605.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  1606.         JZ    LOC_0963
  1607.         MOV    AL,9            ; TAB
  1608.         STOSB                ; Store al to es:[di]
  1609.         CALL    SUB_181D
  1610.         MOV    AL,9            ; TAB
  1611.         STOSB                ; Store al to es:[di]
  1612.         MOV    AX,3F3FH        ; '??'
  1613.         STOSW                ; Store ax to es:[di]
  1614. LOC_0963:
  1615.         OR    BYTE PTR [DI-1],80H
  1616.         MOV    SI,OPW_TBL_WD_285F    ; (72B5:285F=0)
  1617.         AND    SI,0FFFH        ; keep low 12-bits
  1618.         ADD    SI,OFFSET MN_AAA    ; (72B5:20F4=41H)
  1619.         CALL    WR_STRING_0601
  1620. ;**CHANGED**    MOV    SI,OFFSET DATA_298B    ; 132-byte line buffer
  1621.         MOV    SI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  1622.         TEST    BYTE PTR [SI],7FH
  1623.         JZ    LOC_0984
  1624. LOC_097E:
  1625.         CALL    SUB_05BC
  1626.         CALL    WR_STRING_0601
  1627. LOC_0984:
  1628.         MOV    DI,DATA_288D        ; (=0)
  1629.         CMP    DI,DATA_2893        ; (=0)
  1630.         JAE    LOC_09AB
  1631.         MOV    AX,[DI]
  1632.         CMP    AX,DATA_2858        ; (=0)
  1633.         JA    LOC_09AB
  1634.         ADD    DI,2
  1635.         MOV    DATA_288D,DI        ; (=0)
  1636.         MOV    SI,OFFSET MS_RELOC_275E    ; (72B5:275E=3BH)
  1637.  
  1638. ALTR_W_09A0:                    ; Altered code
  1639. ;**CHANGED**    MOV    DX,0
  1640.         MOV    DX,OLD_W_09A1
  1641.         CALL    SUB_0E70
  1642.         OR    BYTE PTR [DI],1
  1643.         JMP    SHORT LOC_097E
  1644. LOC_09AB:
  1645.         MOV    SI,OFFSET DATA_2879    ; (72B5:2879=9)
  1646.         TEST    BYTE PTR DATA_2887,7FH    ; (=0)
  1647.         JNZ    LOC_09BE
  1648.         TEST    BYTE PTR [SI+3],7FH
  1649.         JZ    LOC_09BE
  1650.         CALL    WR_STRING_0601
  1651. LOC_09BE:
  1652. ;**CHANGED**    TEST    BYTE PTR DATA_2870,0FFH    ; (=0FFH)
  1653.         TEST    BYTE PTR SW_O_OUTPUT_LST,0FFH    ; (=0FFH)
  1654.         JNZ    LOC_09C8
  1655.         JMP    LOC_0AAA
  1656. LOC_09C8:
  1657. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_B_0A0E+2,28H    ; (72B5:0A10=40H) '('
  1658.         MOV    BYTE PTR DS:OLD_B_0A10,28H    ; (72B5:0A10=40H) '('
  1659. ;**CHANGED**    TEST    WORD PTR DS:ALTR_W_09E2+1,0FFFFH    ; (72B5:09E3=0FFFFH)
  1660.         TEST    WORD PTR DS:OLD_W_09E3,0FFFFH    ; (72B5:09E3=0FFFFH)
  1661.         JZ    LOC_09ED
  1662. LOC_09D5:
  1663.         CALL    SUB_05BC
  1664.         CMP    BYTE PTR DATA_2848,1EH    ; (=0) 30 decimal
  1665.         JB    LOC_09D5
  1666.         CALL    WR_SEMI_05B9
  1667.  
  1668. ALTR_W_09E2:                    ; Altered code
  1669. ;**CHANGED**    MOV    SI,0FFFFH
  1670.         MOV    SI,OLD_W_09E3
  1671.         CALL    WR_STRING_0601
  1672. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_B_0A0E+2,40H    ; (72B5:0A10=40H) '@'
  1673.         MOV    BYTE PTR DS:OLD_B_0A10,40H    ; (72B5:0A10=40H) '@'
  1674. LOC_09ED:
  1675. ;**CHANGED**    TEST    BYTE PTR DATA_2875,0FFH    ; (=0FFH)
  1676.         TEST    BYTE PTR SW_T_TRACE_OUTP,0FFH    ; (=0FFH)
  1677.         JZ    LOC_0A6A
  1678.         MOV    BL,DATA_2848        ; (=0)
  1679.         AND    BL,0F8H            ; clear low 3-bits
  1680. LOC_09FB:
  1681.         ADD    BL,8
  1682.         CALL    SUB_05BC
  1683.         CMP    BL,28H            ; '('
  1684.         JB    LOC_09FB
  1685. ;**CHANGED**    MOV    WORD PTR DS:ALTR_W_0A47+1,10H    ; (72B5:0A48=10H)
  1686.         MOV    WORD PTR DS:OLD_W_0A48,10H    ; (72B5:0A48=10H)
  1687.         JZ    LOC_0A35
  1688.  
  1689. ALTR_B_0A0E:                    ; Altered code
  1690. ;**CHANGED**    CMP    BL,40H            ; '@'
  1691.         CMP    BL,OLD_B_0A10        ; '@'
  1692.         JB    LOC_0A35
  1693.         CALL    WR_CRLF_05AE
  1694.         CALL    SUB_05BC
  1695.         CALL    SUB_05BC
  1696.         CALL    SUB_05BC
  1697. ;**CHANGED**    MOV    WORD PTR DS:ALTR_W_0A47+1,18H    ; (72B5:0A48=10H)
  1698.         MOV    WORD PTR DS:OLD_W_0A48,18H    ; (72B5:0A48=10H)
  1699.         CMP    DATA_2854,6        ; (Tab counter ?)
  1700.         JA    LOC_0A35
  1701.         CALL    SUB_05BC
  1702.         CALL    SUB_05BC
  1703.         CALL    SUB_05BC
  1704. LOC_0A35:
  1705.         CALL    WR_SEMI_05B9
  1706.         MOV    AX,DATA_2858        ; (=0)
  1707.         MOV    CX,DATA_2854        ; (=0)
  1708.         SUB    AX,CX
  1709. ;**CHANGED**    CMP    CX,DS:ALTR_W_0A47+1    ; (72B5:0A48=10H)
  1710.         CMP    CX,DS:OLD_W_0A48    ; (72B5:0A48=10H)
  1711.         JBE    LOC_0A4A
  1712.  
  1713. ALTR_W_0A47:                    ; Altered code
  1714. ;**CHANGED**    MOV    CX,10H
  1715.         MOV    CX,OLD_W_0A48
  1716. LOC_0A4A:
  1717.         CALL    SUB_058C
  1718.         MOV    SI,OFFSET DATA_282B    ; 24-byte buffer
  1719.  
  1720. LOCLOOP_0A50:
  1721.         CALL    SUB_05BF
  1722.         LODSB                ; String [si] to al
  1723. ;**CHANGED**    MOV    DI,OFFSET DATA_298B    ; 132-byte line buffer
  1724.         MOV    DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  1725.         PUSH    DI
  1726.         CALL    CNV_B_2_HX_1524
  1727.         POP    DI
  1728.         XCHG    SI,DI
  1729.         LODSB                ; String [si] to al
  1730.         CALL    WR_CHR_AL_05C1
  1731.         LODSB                ; String [si] to al
  1732.         CALL    WR_CHR_AL_05C1
  1733.         XCHG    SI,DI
  1734.         LOOP    LOCLOOP_0A50        ; Loop if cx > 0
  1735.  
  1736. LOC_0A6A:
  1737.         CALL    WR_CRLF_05AE
  1738.         TEST    BYTE PTR DATA_285D,0FFH    ; (=0)
  1739.         JZ    LOC_0A7D
  1740.         MOV    SI,OFFSET MN_TAB_NOP    ; (72B5:239D=9)
  1741.         CALL    WR_STRING_0601
  1742.         CALL    WR_CRLF_05AE
  1743.  
  1744. LOC_0A7D:    ;test for op-code 81H, possible op-code 83H optimization.
  1745.  
  1746.         CMP    BYTE PTR OPCODE_BYT_286B,81H    ; (72B5:286B=0)
  1747.         JNE    LOC_0AA0        ; Jump if not op-code 81H
  1748.  
  1749.         MOV    AL,MOD_REG_RM_286C    ; (72B5:286C=0)
  1750.         XOR    AL,0C0H            ;flip the MOD bits
  1751.         AND    AL,0C7H            ;mask out REG op-code bits
  1752.         JZ    LOC_0AA0        ;PATCH83 not used for AX reg
  1753.         TEST    AL,0C0H            ;was it MOD 11?
  1754.         JNZ    LOC_0AA0        ;PATCH83 only used for MOD 11
  1755.  
  1756.         CMP    OLD_W_0946,07FH        ;is value 0 thru 127?
  1757.         JA    LOC_0AA_NEG        ;if no, jump
  1758.  
  1759.         MOV    BYTE PTR MAC_PATCH83,1    ; (72B5:24E0=0)
  1760.         MOV    SI,OFFSET MN_PATCH83_POS
  1761.         CALL    WR_STRING_0601
  1762.         JMP    SHORT LOC_0AA0
  1763.  
  1764. LOC_0AA_NEG:
  1765.         CMP    OLD_W_0946,0FF80H    ;is value -1 thru -128?
  1766.         JB    LOC_0AA0        ;if no, jump
  1767.  
  1768.         MOV    BYTE PTR MAC_PATCH83,1    ; (72B5:24E0=0)
  1769.         MOV    SI,OFFSET MN_PATCH83_NEG
  1770.         CALL    WR_STRING_0601
  1771.  
  1772. LOC_0AA0:
  1773.         TEST    BYTE PTR DATA_285C,0FFH    ; (=0)
  1774.         JZ    LOC_0AAA
  1775.         CALL    WR_CRLF_05AE
  1776. LOC_0AAA:
  1777.         TEST    DATA_284D,0FFFFH    ; (72B5:284D=0)
  1778.         JZ    LOC_0AB5
  1779.         JMP    LOC_0799
  1780. LOC_0AB5:
  1781.         TEST    BYTE PTR DATA_286D,0FFH    ; (=0)
  1782.         JNZ    LOC_0AE3
  1783.         MOV    DX,DATA_2A94        ; Code Segment value
  1784.         MOV    CL,4
  1785.         SHL    DX,CL            ; Shift w/zeros fill
  1786.         ADD    DX,DATA_2A92        ; Code Offset value
  1787. ;**CHANGED**    MOV    DS:ALTR_W_0B2B+1,DX    ; (72B5:0B2C=0)
  1788.         MOV    DS:OLD_W_0B2C,DX    ; (72B5:0B2C=0)
  1789.         MOV    BYTE PTR DATA_2887,0    ; (=0)
  1790.         MOV    BYTE PTR OPW_HI_NBL_286A,0    ; (72B5:286A=0)
  1791.         MOV    BYTE PTR OPJ_HI_BYT_2869,20H    ; (72B5:2869=0) ' '
  1792. ;**CHANGED**    MOV    BYTE PTR DATA_2871,0FFH    ; (=0FFH)
  1793.         MOV    BYTE PTR SW_R_TABLE_LST,0FFH    ; (=0FFH)
  1794.         CALL    SUB_0EAB
  1795. LOC_0AE3:
  1796.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  1797.         JE    LOC_0AFE
  1798. ;**CHANGED**    MOV    BYTE PTR DATA_2870,0FFH    ; (=0FFH)
  1799.         MOV    BYTE PTR SW_O_OUTPUT_LST,0FFH    ; (=0FFH)
  1800. LOC_0AEF:
  1801.         TEST    BYTE PTR DATA_2888,0FFH    ; (=0)
  1802.         JZ    LOC_0AFE
  1803.         CALL    SUB_0FA8
  1804.         CALL    SUB_10A8
  1805.         JMP    SHORT LOC_0AEF
  1806. LOC_0AFE:
  1807.         MOV    DX,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  1808.         MOV    AH,10H
  1809.         INT    21H            ; DOS Services  ah=function 10h
  1810.                         ;  close file, FCB @ ds:dx
  1811.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  1812.         JNE    LOC_0B1B
  1813.         MOV    BYTE PTR DATA_2861,2    ; (=0)
  1814.         CMP    BYTE PTR DATA_2862,41H    ; (=0) 'A'
  1815.         JNE    LOC_RET_0B49
  1816.         JMP    LOC_0722
  1817. LOC_0B1B:
  1818.         CALL    SUB_1221
  1819.         MOV    SI,OFFSET DATA_217E    ; (72B5:217E=45H)
  1820.         CALL    WR_STRING_0601
  1821.         TEST    BYTE PTR DATA_286D,0FFH    ; (=0)
  1822.         JNZ    LOC_0B43
  1823.  
  1824. ALTR_W_0B2B:                    ; Altered code
  1825. ;**CHANGED**    MOV    DX,0
  1826.         MOV    DX,OLD_W_0B2C
  1827.         CALL    SUB_0E70
  1828.         CALL    SUB_1B70
  1829.         JC    LOC_0B3D
  1830.         JZ    LOC_0B3D
  1831.         CALL    WR_STRING_0601
  1832.         JMP    SHORT LOC_0B43
  1833. LOC_0B3D:
  1834.         CALL    WR_L_05B6
  1835.         CALL    SUB_05A6
  1836. LOC_0B43:
  1837.         CALL    WR_CRLF_05AE
  1838.         CALL    SUB_064A
  1839.  
  1840. LOC_RET_0B49:
  1841.         RETN
  1842. SUB_0714    ENDP
  1843.  
  1844.  
  1845. ;==========================================================================
  1846. ;                   SUBROUTINE
  1847. ;==========================================================================
  1848.  
  1849. SUB_0B4A    PROC    NEAR
  1850.         MOV    BX,DATA_2893        ; (=0)
  1851.         TEST    BYTE PTR [BX],80H
  1852.         JNZ    LOC_RET_0B6F
  1853.         MOV    BYTE PTR DATA_2888,0FFH    ; (=0)
  1854. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_B_0FBA+1,0    ; (72B5:0FBB=0)
  1855.         MOV    BYTE PTR DS:OLD_B_0FBB,0    ; (72B5:0FBB=0)
  1856.         CALL    SUB_0B70
  1857.         MOV    SI,BP
  1858.         JNC    LOC_0B67
  1859.         JMP    LOC_0214
  1860. LOC_0B67:
  1861.         CALL    SUB_0FA8
  1862.         JZ    LOC_0B67
  1863.         CALL    SUB_064A
  1864.  
  1865. LOC_RET_0B6F:
  1866.         RETN
  1867. SUB_0B4A    ENDP
  1868.  
  1869.  
  1870. ;==========================================================================
  1871. ;                   SUBROUTINE
  1872. ;==========================================================================
  1873.  
  1874. SUB_0B70    PROC    NEAR
  1875.         MOV    AX,OFFSET DTA4_2C9E    ; (72B5:2C9E=0)
  1876.         MOV    DATA_2881,AX        ; (=0)
  1877.         MOV    SI,OFFSET MN_TITLE    ; (72B5:2431=54H)
  1878.         CALL    WR_STRING_0601
  1879.         MOV    SI,OFFSET FCB3_NAME_2A10    ; (72B5:2A10=6EH)
  1880.         MOV    CX,8
  1881.  
  1882. LOCLOOP_0B82:
  1883.         LODSB                ; String [si] to al
  1884.         CMP    AL,20H            ; ' '
  1885.         JE    LOC_0B8C
  1886.         CALL    WR_CHR_AL_05C1
  1887.         LOOP    LOCLOOP_0B82        ; Loop if cx > 0
  1888.  
  1889. LOC_0B8C:
  1890. ;**CHANGED**    MOV    DI,OFFSET DATA_298B    ; 132-byte line buffer
  1891.         MOV    DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  1892.         PUSH    DI
  1893.         MOV    AL,9
  1894.         STOSB                ; Store al to es:[di]
  1895.         MOV    DX,WORD PTR FCB3_DATE_2A23    ; (72B5:2A23=6365H)
  1896.         MOV    BX,DX
  1897.         MOV    CL,5
  1898.         SHR    BX,CL            ; Shift w/zeros fill
  1899.         AND    BX,0FH            ; clear high 12-bits
  1900.     ;***    nop                ;*Fixup for MASM (M)
  1901.         PATCH83    0            ;PATCH83 edited in (JEG)
  1902.         CALL    SUB_11E7
  1903.         MOV    BX,DX
  1904.         AND    BX,1FH            ; clear high 11-bits
  1905.     ;***    nop                ;*Fixup for MASM (M)
  1906.         PATCH83    0            ;PATCH83 edited in (JEG)
  1907.         CALL    SUB_11E4
  1908.         MOV    BL,DH
  1909.         SHR    BX,1            ; Shift w/zeros fill
  1910.         ADD    BX,50H
  1911.         CALL    SUB_11E4
  1912.         MOV    AX,5B09H        ; "TAB ["
  1913.         STOSW                ; Store ax to es:[di]
  1914.         MOV    AH,2AH
  1915.         INT    21H            ; DOS Services  ah=function 2Ah
  1916.                         ;  get date, cx=year, dx=mon/day
  1917.         MOV    BL,DH
  1918.         MOV    BH,0
  1919.         CALL    SUB_11E7
  1920.         MOV    BL,DL
  1921.         CALL    SUB_11E4
  1922.         MOV    BX,CX
  1923.         SUB    BX,76CH        ;***** WHAT IS THIS ? *****
  1924.         CALL    SUB_11E4
  1925.         MOV    AL,5DH            ; ']'
  1926.         STOSB                ; Store al to es:[di]
  1927.         MOV    AX,8A0DH        ; "CR LF", high bit set
  1928.         STOSW                ; Store ax to es:[di]
  1929.         POP    SI
  1930.         CALL    WR_STRING_0601
  1931.         CALL    WR_CRLF_05AE
  1932.         MOV    DX,OFFSET FCB4_2A34    ; (72B5:2A34=0DH)
  1933.         MOV    AH,16H
  1934.         INT    21H            ; DOS Services  ah=function 16h
  1935.                         ;  creat/truncat file FCB @ds:dx
  1936.         PUSH    AX
  1937.         MOV    AH,FCB4_RESRV_2A4C    ; (72B5:2A4C=73H)
  1938.         CMP    AH,0FFH
  1939.         JE    LOC_0C03
  1940.         MOV    DX,OFFSET MS_WRITING_27FD    ; (72B5:27FD=0DH)
  1941.         MOV    AH,9
  1942.         INT    21H            ; DOS Services  ah=function 09h
  1943.                         ;  display char string at ds:dx
  1944.         MOV    SI,OFFSET FCB4_2A34    ; (72B5:2A34=0DH)
  1945.         CALL    SUB_06B1
  1946.         CALL    DSPY_CRLF_06FB
  1947. LOC_0C03:
  1948. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_OPB_064A+0,90H    ; (72B5:064A=0C3H)
  1949.         MOV    OLD_RET_NOP_064A,0FFH ; (=0C3H) set NOP
  1950.         MOV    BYTE PTR FCB4_CUREC_2A54,0    ; (=52H)
  1951.         MOV    WORD PTR FCB4_RECSZ_2A42,200H    ; (72B5:2A42=4320H)
  1952. ;**CHANGED**    MOV    BYTE PTR DATA_2872,0FFH    ; (=0FFH)
  1953.         MOV    BYTE PTR SW_E_EMBED_REF,0FFH    ; (=0FFH)
  1954. ;**CHANGED**    MOV    BYTE PTR DATA_2870,0FFH    ; (=0FFH)
  1955.         MOV    BYTE PTR SW_O_OUTPUT_LST,0FFH    ; (=0FFH)
  1956.         MOV    DATA_2849,0        ; (=0)
  1957.         MOV    DATA_284B,0        ; (=0)
  1958.         MOV    BP,DATA_2893        ; (=0)
  1959.         POP    AX
  1960.  
  1961. ;==== External Entry into Subroutine ======================================
  1962.  
  1963. SUB_0C2E:
  1964.         OR    AL,AL
  1965.         JZ    LOC_RET_0C36
  1966.         MOV    DX,OFFSET MS_DIRFULL_2691    ; (72B5:2691=4EH)
  1967.         STC                ; Set carry flag
  1968.  
  1969. LOC_RET_0C36:
  1970.         RETN
  1971. SUB_0B70    ENDP
  1972.  
  1973.  
  1974. ;==========================================================================
  1975. ;                   SUBROUTINE
  1976. ;==========================================================================
  1977.  
  1978. SUB_0C37    PROC    NEAR
  1979.         CALL    SUB_0E00
  1980.         JNC    LOC_0C3D
  1981.         RETN
  1982. LOC_0C3D:
  1983.         MOV    DATA_2889,DATA_2E9E_E    ; (=0) (=0)
  1984.         MOV    AX,DATA_288F        ; (=0)
  1985.         MOV    DATA_288D,AX        ; (=0)
  1986.         XOR    AX,AX
  1987.         MOV    DATA_2867,AX        ; (=0)
  1988.         MOV    DATA_2866,AL        ; (=0)
  1989. ;**CHANGED**    MOV    DS:ALTR_B_0EF8+1,AL    ; (72B5:0EF9=0)
  1990.         MOV    DS:OLD_B_0EF9,AL    ; (72B5:0EF9=0)
  1991.         MOV    DATA_2856,AL        ; (=0)
  1992.         MOV    DATA_2919,AX        ; (=0)
  1993. ;**CHANGED**    MOV    DS:ALTR_W_0802+1,AX    ; (72B5:0803=0)
  1994.         MOV    DS:OLD_W_0803,AX    ; (72B5:0803=0)
  1995.         MOV    DATA_291B,AL        ; (=0)
  1996.         MOV    DATA_2887,AL        ; (=0)
  1997.         MOV    DATA_2854,AX        ; (=0)
  1998.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  1999.         JNE    LOC_0CD1
  2000.         XOR    AX,AX
  2001. ;**CHANGED**    MOV    DS:ALTR_B_10B6+1,AL    ; (72B5:10B7=0)
  2002.         MOV    DS:OLD_B_10B7,AL    ; (72B5:10B7=0)
  2003.         MOV    DATA_2853,AL        ; (=0)
  2004.         MOV    DATA_2891,AX        ; (=0)
  2005.         MOV    DATA_2A94,AX        ; Code Segment value
  2006.         MOV    DATA_2A92,100H        ; Code Offset value
  2007.         MOV    DATA_2A8C,AX        ; (=0A0AH)
  2008.         MOV    DATA_2A8E,0FFFFH    ; (=7845H)
  2009.         MOV    AX,WORD PTR FCB3_FILSZ_2A1F    ; (72B5:2A1F=2058H)
  2010.         MOV    DATA_2851,AX        ; (=0)
  2011.         MOV    DI,DATA_288F        ; (=0)
  2012.         CMP    WORD PTR FCB3_EXT1_2A18,5845H    ; 'EX' test for EXE
  2013.         JNE    LOC_0CB7
  2014.         CMP    BYTE PTR FCB3_EXT3_2A1A,45H    ; (72B5:2A1A=20H) 'E'
  2015.         JNE    LOC_0CB7
  2016.         CALL    SUB_0D5A
  2017.         MOV    DI,DATA_2915        ; (=0)
  2018.         TEST    BYTE PTR DATA_286D,0FFH    ; (=0)
  2019.         JNZ    LOC_0CB7
  2020.         MOV    DATA_285A,0        ; (=0)
  2021. LOC_0CB7:
  2022.         MOV    DATA_2893,DI        ; (=0)
  2023.         MOV    BYTE PTR [DI],0C0H
  2024.         MOV    AH,3
  2025.         CALL    SUB_0F6C
  2026.         MOV    AL,41H            ; 'A'
  2027.         STOSB                ; Store al to es:[di]
  2028.         XOR    AX,AX
  2029. ;**CHANGED**    MOV    DS:ALTR_W_1222+1,AX    ; (72B5:1223=0)
  2030.         MOV    DS:OLD_W_1223,AX    ; (72B5:1223=0)
  2031.         STOSW                ; Store ax to es:[di]
  2032.         MOV    BYTE PTR DATA_2888,0    ; (=0)
  2033. LOC_0CD1:
  2034.         MOV    AX,DATA_2851        ; (=0)
  2035.         MOV    DATA_284D,AX        ; (72B5:284D=0)
  2036.         MOV    WORD PTR FCB3_RECSZ_2A1D,200H    ; (72B5:2A1D=90AH)
  2037.         MOV    WORD PTR FCB3_BLKNO_2A1B,0    ; (72B5:2A1B=0D3AH)
  2038.         MOV    AL,DATA_2853        ; (=0)
  2039.         MOV    FCB3_CUREC_2A2F,AL    ; (=65H)
  2040.         MOV    DI,OFFSET INIT_CS_SEG_FIX    ; (72B5:2603=30H)
  2041.         MOV    DX,DATA_2A94        ; Code Segment value
  2042.         CALL    CNV_W_2_HX_151D
  2043.         MOV    DX,DATA_2A92        ; Code Offset value
  2044.         INC    DI
  2045.         CALL    CNV_W_2_HX_151D
  2046.         MOV    DI,OFFSET DATA_2823    ; (=0)
  2047.         XOR    AX,AX
  2048.         MOV    CX,4
  2049.         REP    STOSW            ; Rep when cx >0 Store ax to es:[di]
  2050.         MOV    DI,OFFSET INIT_SP_SEG_FIX    ; (72B5:2618=30H)
  2051.         MOV    DX,DATA_2A8C        ; 
  2052.         CALL    CNV_W_2_HX_151D
  2053.         INC    DI
  2054.         MOV    CL,4
  2055.         SHL    DX,CL            ; Shift w/zeros fill
  2056.         PUSH    DX
  2057.         MOV    DX,DATA_2A8E        ; 
  2058.         CALL    CNV_W_2_HX_151D
  2059.         MOV    AX,DATA_285A        ; (=0)
  2060.         MOV    DATA_2858,AX        ; (=0)
  2061.         MOV    DATA_287F,OFFSET DTA4_2C9E    ; (=0) (72B5:2C9E=0)
  2062.         POP    AX
  2063.         PUSH    AX
  2064.         ADD    DX,AX
  2065. ;**CHANGED**    TEST    BYTE PTR DS:ALTR_B_10B6+1,0FFH    ; (72B5:10B7=0)
  2066.         TEST    BYTE PTR DS:OLD_B_10B7,0FFH    ; (72B5:10B7=0)
  2067.         PUSHF
  2068.         JZ    LOC_0D3D
  2069.         CALL    SUB_0EAB
  2070.  
  2071. ALTR_W_0D37:                    ; Altered code
  2072. ;**CHANGED**    MOV    BX,0
  2073.         MOV    BX,OLD_W_0D38
  2074.         OR    BYTE PTR [BX],1
  2075. LOC_0D3D:
  2076.         POPF
  2077.         POP    DX
  2078.         JZ    LOC_0D53
  2079.         CALL    SUB_0EAB
  2080. ;**CHANGED**    MOV    BX,DS:ALTR_W_0D37+1    ; (72B5:0D38=0)
  2081.         MOV    BX,DS:OLD_W_0D38    ; (72B5:0D38=0)
  2082.         OR    BYTE PTR [BX],1
  2083.         MOV    DATA_2825,DX        ; (=0)
  2084. ;**CHANGED**    MOV    DS:ALTR_W_10BC+2,DX    ; (72B5:10BE=8888H)
  2085.         MOV    DS:OLD_W_10BE,DX    ; (72B5:10BE=8888H)
  2086. LOC_0D53:
  2087.         CLC                ; Clear carry flag
  2088. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_B_0FBA+1,0    ; (72B5:0FBB=0)
  2089.         MOV    BYTE PTR DS:OLD_B_0FBB,0    ; (72B5:0FBB=0)
  2090.  
  2091. LOC_RET_0D59:
  2092.         RETN
  2093. SUB_0C37    ENDP
  2094.  
  2095.  
  2096. ;==========================================================================
  2097. ;                   SUBROUTINE
  2098. ;==========================================================================
  2099.  
  2100. SUB_0D5A    PROC    NEAR
  2101. ;**CHANGED**    DEC    BYTE PTR DS:ALTR_B_10B6+1    ; (72B5:10B7=0)
  2102.         DEC    BYTE PTR DS:OLD_B_10B7    ; (72B5:10B7=0)
  2103.         MOV    CX,1AH
  2104.         MOV    WORD PTR FCB3_RECSZ_2A1D,1    ; (72B5:2A1D=90AH)
  2105.         MOV    DX,OFFSET DTA1_2A7E    ; (72B5:2A7E=72H)
  2106.         MOV    AH,1AH
  2107.         INT    21H            ; DOS Services  ah=function 1Ah
  2108.                         ;  set DTA to ds:dx
  2109.         MOV    DX,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  2110.         MOV    CX,1AH
  2111.         MOV    AH,27H
  2112.         INT    21H            ; DOS Services  ah=function 27h
  2113.                         ;  random block read, FCB @ds:dx
  2114.         OR    AL,AL
  2115.         JZ    LOC_0D7F
  2116.         JMP    SHORT LOC_0DFA
  2117.     ;***    DB    90H
  2118. LOC_0D7F:
  2119.         MOV    AX,DATA_2A86        ; 
  2120.         ADD    AX,1FH
  2121.         MOV    CL,5
  2122.         SHR    AX,CL            ; Shift w/zeros fill
  2123.         MOV    DATA_2853,AL        ; (=0)
  2124.         MOV    CL,9
  2125.         SHL    AX,CL            ; Shift w/zeros fill
  2126.         XCHG    AX,BX
  2127.         MOV    AX,DATA_2A82        ; 
  2128.         DEC    AX
  2129.         SHL    AX,CL            ; Shift w/zeros fill
  2130.         SUB    AX,BX
  2131.         MOV    BX,DATA_2A80        ; 
  2132.         CMP    BX,4
  2133.         JNE    LOC_0DA5
  2134.         MOV    BX,200H
  2135. LOC_0DA5:
  2136.         ADD    AX,BX
  2137.         MOV    DATA_2851,AX        ; (=0)
  2138.         MOV    AX,DATA_2A96        ; FCB3 Random Rec Num value
  2139.         MOV    FCB3_RNDRC_2A30,AX    ; (=7073H)
  2140.         TEST    DATA_2A84,0FFFFH    ; 
  2141.         JZ    LOC_RET_0D59
  2142.         MOV    DX,OFFSET DTA2_2A98
  2143.         MOV    AH,1AH
  2144.         INT    21H            ; DOS Services  ah=function 1Ah
  2145.                         ;  set DTA to ds:dx
  2146. LOC_0DBF:
  2147.         MOV    DX,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  2148.         MOV    CX,4
  2149.         MOV    AH,27H
  2150.         INT    21H            ; DOS Services  ah=function 27h
  2151.                         ;  random block read, FCB @ds:dx
  2152.         OR    AL,AL
  2153.         JNZ    LOC_0DFA
  2154.         MOV    BX,WORD PTR DTA2_W2_2A9A ; Segment value
  2155.         MOV    CL,4
  2156.         SHL    BX,CL            ; Shift w/zeros fill
  2157.         ADD    BX,WORD PTR DTA2_2A98    ; Offset value
  2158.         MOV    DI,DATA_288F        ; (=0)
  2159. LOC_0DDD:
  2160.         CMP    DI,DATA_2915        ; (=0)
  2161.         JAE    LOC_0DEC
  2162.         CMP    BX,[DI]
  2163.         JBE    LOC_0DEC
  2164.         ADD    DI,2
  2165.         JMP    SHORT LOC_0DDD
  2166. LOC_0DEC:
  2167.         MOV    AH,2
  2168.         CALL    SUB_0F6C
  2169.         XCHG    AX,BX
  2170.         STOSW                ; Store ax to es:[di]
  2171.         DEC    DATA_2A84        ; (=7420H)
  2172.         JNZ    LOC_0DBF
  2173.         RETN
  2174. LOC_0DFA:
  2175.         MOV    DX,OFFSET MS_ERR_RD_26C6    ; (72B5:26C6=45H)
  2176.         JMP    LOC_0214
  2177. SUB_0D5A    ENDP
  2178.  
  2179.  
  2180. ;==========================================================================
  2181. ;                   SUBROUTINE
  2182. ;==========================================================================
  2183.  
  2184. SUB_0E00    PROC    NEAR
  2185.         MOV    DX,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  2186.         MOV    DI,OFFSET FCB3_BLKNO_2A1B    ; (72B5:2A1B=3AH)
  2187.         MOV    CX,19H            ; 25 decimal, initiallize FCB3
  2188.         MOV    AL,0
  2189.         REP    STOSB            ; Rep when cx >0 Store al to es:[di]
  2190.         MOV    AH,0FH
  2191.         INT    21H            ; DOS Services  ah=function 0Fh
  2192.                         ;  open file, FCB @ ds:dx
  2193.         MOV    DATA_287F,OFFSET DTA4_2C9E    ; (=0) (72B5:2C9E=0)
  2194.         MOV    WORD PTR FCB3_RECSZ_2A1D,200H    ; (72B5:2A1D=90AH)
  2195.         OR    AL,AL
  2196.         JZ    LOC_RET_0E36
  2197.         MOV    DX,OFFSET MS_FILE_267D    ; (72B5:267D=46H)
  2198.         MOV    AH,9
  2199.         INT    21H            ; DOS Services  ah=function 09h
  2200.                         ;  display char string at ds:dx
  2201.         MOV    SI,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  2202.         CALL    SUB_06B1
  2203.         MOV    DX,OFFSET MS_NOTFND_2683    ; (72B5:2683=20H)
  2204.         MOV    AH,9
  2205.         INT    21H            ; DOS Services  ah=function 09h
  2206.                         ;  display char string at ds:dx
  2207.         STC                ; Set carry flag
  2208.  
  2209. LOC_RET_0E36:
  2210.         RETN
  2211. SUB_0E00    ENDP
  2212.  
  2213.  
  2214. ;==========================================================================
  2215. ;                   SUBROUTINE
  2216. ;==========================================================================
  2217.  
  2218. SUB_0E37    PROC    NEAR
  2219.         CALL    SCAN_SPTAB_0E3F
  2220.         CMP    AL,2CH            ; ','
  2221.         JNE    LOC_0E49
  2222.         INC    SI
  2223.  
  2224. ;==== External Entry into Subroutine ======================================
  2225. ;
  2226. ;         Scan off spaces and Tabs
  2227.  
  2228. SCAN_SPTAB_0E3F:
  2229. LOC_0E3F:
  2230.         LODSB                ; String [si] to al
  2231.         CMP    AL,20H            ; ' '
  2232.         JE    LOC_0E3F
  2233.         CMP    AL,9            ; TAB
  2234.         JE    LOC_0E3F
  2235.         DEC    SI
  2236. LOC_0E49:
  2237.         CMP    AL,0DH            ; CR
  2238.         RETN
  2239. SUB_0E37    ENDP
  2240.  
  2241.  
  2242. ;==========================================================================
  2243. ;                   SUBROUTINE
  2244. ;==========================================================================
  2245.  
  2246. SUB_0E4C    PROC    NEAR
  2247.         MOV    SI,DATA_2893        ; (=0)
  2248. LOC_0E50:
  2249.         MOV    DL,0
  2250.         TEST    BYTE PTR [SI],80H
  2251.         JZ    LOC_0E58
  2252.         RETN
  2253. LOC_0E58:
  2254.         MOV    BX,SI
  2255. LOC_0E5A:
  2256.         ADD    SI,3
  2257.         MOV    AL,[SI]
  2258.         TEST    AL,0C0H
  2259.         JNZ    LOC_0E67
  2260.         OR    DL,AL
  2261.         JMP    SHORT LOC_0E5A
  2262. LOC_0E67:
  2263.         OR    DL,DL
  2264.         JNZ    LOC_0E50
  2265.         OR    BYTE PTR [BX],20H    ; ' '
  2266.         JMP    SHORT LOC_0E50
  2267. SUB_0E4C    ENDP
  2268.  
  2269.  
  2270. ;==========================================================================
  2271. ;                   SUBROUTINE
  2272. ;==========================================================================
  2273.  
  2274. SUB_0E70    PROC    NEAR
  2275.         CMP    DATA_2891,40H        ; (=0)
  2276.         MOV    DI,OFFSET DATA_2895    ; 128-byte buffer
  2277.         JC    LOC_0E88
  2278.         MOV    CX,20H
  2279.         JMP    SHORT LOC_0E82
  2280.  
  2281. LOCLOOP_0E7F:
  2282.         ADD    DI,4
  2283. LOC_0E82:
  2284.         CMP    DX,[DI]
  2285.         JE    LOC_0E8F
  2286.         JNC    LOC_0E8D
  2287. LOC_0E88:
  2288.         SUB    DI,4
  2289.         JMP    SHORT LOC_0E8F
  2290. LOC_0E8D:
  2291.         LOOPNZ    LOCLOOP_0E7F        ; Loop if zf=0, cx>0
  2292.  
  2293. LOC_0E8F:
  2294.         MOV    DI,[DI+2]
  2295.         JMP    SHORT LOC_0E97
  2296. LOC_0E94:
  2297.         ADD    DI,3
  2298. LOC_0E97:
  2299.         MOV    AL,[DI]
  2300.         TEST    AL,0C0H
  2301.         JZ    LOC_0E94
  2302.         TEST    AL,80H
  2303.         JNZ    LOC_0EA6
  2304.         CMP    DX,[DI+1]
  2305.         JA    LOC_0E94
  2306. LOC_0EA6:
  2307. ;**CHANGED**    MOV    DS:ALTR_W_0D37+1,DI    ; (72B5:0D38=0)
  2308.         MOV    DS:OLD_W_0D38,DI    ; (72B5:0D38=0)
  2309.         RETN
  2310. SUB_0E70    ENDP
  2311.  
  2312.  
  2313. ;==========================================================================
  2314. ;                   SUBROUTINE
  2315. ;==========================================================================
  2316.  
  2317. SUB_0EAB    PROC    NEAR
  2318. LOC_0EAB:
  2319.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  2320.         JNE    LOC_0EA6
  2321. ;**CHANGED**    TEST    BYTE PTR DATA_2871,0FFH    ; (=0FFH)
  2322.         TEST    BYTE PTR SW_R_TABLE_LST,0FFH    ; (=0FFH)
  2323.         JZ    LOC_0EA6
  2324.         PUSH    DI
  2325.         MOV    BX,DATA_2858        ; (=0)
  2326.         TEST    BYTE PTR DATA_2887,7FH    ; (=0)
  2327.         JNZ    LOC_0EC9
  2328.         SUB    BX,DATA_2854        ; (=0)
  2329. LOC_0EC9:
  2330.         CALL    SUB_0E70
  2331.         JZ    LOC_0EE4
  2332.         MOV    AH,6
  2333.         INC    DATA_2891        ; (=0)
  2334.         CALL    SUB_0F76
  2335.         JC    ALTR_B_0EF8
  2336.         MOV    BYTE PTR [DI],40H    ; '@'
  2337.         MOV    [DI+1],DX
  2338.         ADD    DI,3
  2339.         JMP    SHORT LOC_0F0C
  2340. LOC_0EE4:
  2341.         ADD    DI,3
  2342.         TEST    BYTE PTR [DI],0C0H
  2343.         JNZ    LOC_0EF1
  2344.         CMP    BX,[DI+1]
  2345.         JAE    LOC_0EE4
  2346. LOC_0EF1:
  2347.         MOV    AH,3
  2348.         CALL    SUB_0F76
  2349.         JNC    LOC_0F0C
  2350.  
  2351. ALTR_B_0EF8:                    ; Altered code
  2352. ;**CHANGED**    MOV    AL,0
  2353.         MOV    AL,OLD_B_0EF9
  2354.         OR    AL,AL
  2355.         JNZ    LOC_0F6A
  2356.         PUSH    DX
  2357.         MOV    DX,OFFSET MS_REF_TBL_INCOMP    ; (72B5:27B6=7)
  2358.         MOV    AH,9
  2359. ;**CHANGED**    MOV    DS:ALTR_B_0EF8+1,AH    ; (72B5:0EF9=0)
  2360.         MOV    DS:OLD_B_0EF9,AH    ; (72B5:0EF9=0) value=9
  2361.         INT    21H            ; DOS Services  ah=function 09h
  2362.                         ;  display char string at ds:dx
  2363.         JMP    SHORT LOC_0F69
  2364. LOC_0F0C:
  2365.         MOV    AL,OPW_HI_NBL_286A    ; (72B5:286A=0)
  2366.         MOV    CL,4
  2367.         SHR    AL,CL            ; Shift w/zeros fill
  2368.         MOV    CL,30H            ; '0'
  2369.         AND    CL,OPJ_HI_BYT_2869    ; (72B5:2869=0)
  2370.         OR    AL,CL
  2371.         TEST    BYTE PTR DATA_2887,7FH    ; (=0)
  2372.         JZ    LOC_0F24
  2373.         MOV    AL,0
  2374. LOC_0F24:
  2375.         MOV    [DI],AL
  2376.         MOV    [DI+1],BX
  2377.         MOV    BYTE PTR DATA_2888,0FFH    ; (=0)
  2378.         TEST    DATA_2891,3FH        ; (=0)
  2379.         JNZ    LOC_0F6A
  2380.         MOV    SI,DATA_2893        ; (=0)
  2381.         MOV    DI,OFFSET DATA_2895    ; 128-byte buffer
  2382.         PUSH    DX
  2383.         PUSH    BX
  2384.         MOV    BL,20H            ; ' '
  2385.         MOV    CL,5
  2386.         MOV    DX,DATA_2891        ; (=0)
  2387.  
  2388. ALTR_B_0F47:                    ; Altered code
  2389. ;**CHANGED**    MOV    AL,0
  2390.         MOV    AL,OLD_B_0F48
  2391.         CMP    AL,DL
  2392.         JE    LOC_0F68
  2393. ;**CHANGED**    MOV    DS:ALTR_B_0F47+1,DL    ; (72B5:0F48=0)
  2394.         MOV    DS:OLD_B_0F48,DL    ; (72B5:0F48=0)
  2395.         SHR    DX,CL            ; Shift w/zeros fill
  2396. LOC_0F53:
  2397.         MOV    CX,DX
  2398.         MOV    AX,SI
  2399.         INC    SI
  2400.         MOVSW                ; Mov [si] to es:[di]
  2401.         STOSW                ; Store ax to es:[di]
  2402.  
  2403. LOCLOOP_0F5A:
  2404.         ADD    SI,3
  2405.         TEST    BYTE PTR [SI],0C0H
  2406.         JZ    LOCLOOP_0F5A
  2407.         LOOP    LOCLOOP_0F5A        ; Loop if cx > 0
  2408.  
  2409.         DEC    BL
  2410.         JNZ    LOC_0F53
  2411. LOC_0F68:
  2412.         POP    BX
  2413. LOC_0F69:
  2414.         POP    DX
  2415. LOC_0F6A:
  2416.         POP    DI
  2417.         RETN
  2418. SUB_0EAB    ENDP
  2419.  
  2420.  
  2421. ;==========================================================================
  2422. ;                   SUBROUTINE
  2423. ;==========================================================================
  2424.  
  2425. SUB_0F6C    PROC    NEAR
  2426.         CALL    SUB_0F76
  2427.         JNC    LOC_RET_0F75
  2428.         POP    AX            ; equallize stack
  2429.         JMP    LOC_0126        ; memory full error message
  2430.  
  2431. LOC_RET_0F75:
  2432.         RETN
  2433. SUB_0F6C    ENDP
  2434.  
  2435.  
  2436. ;==========================================================================
  2437. ;                   SUBROUTINE
  2438. ;==========================================================================
  2439.  
  2440. SUB_0F76    PROC    NEAR
  2441.         PUSH    DI
  2442.         PUSH    SI
  2443.         PUSH    CX
  2444.         PUSH    AX
  2445.         MOV    AL,AH
  2446.         MOV    AH,0
  2447.         MOV    CX,DATA_2915        ; (=0)
  2448.         MOV    SI,CX
  2449.         SUB    CX,DI
  2450.         INC    CX
  2451.         MOV    DI,SI
  2452.         ADD    DI,AX
  2453.         CMP    DI,DATA_2E9E_E        ; (=0)
  2454.         JB    LOC_0F97
  2455.         CMP    DATA_2883,DI        ; (=0)
  2456.         JAE    LOC_0F9A
  2457. LOC_0F97:
  2458.         STC                ; Set carry flag
  2459.         JMP    SHORT LOC_0FA3
  2460. LOC_0F9A:
  2461.         MOV    DATA_2915,DI        ; (=0)
  2462.         STD                ; Set direction flag
  2463.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  2464.         CLD                ; Clear direction
  2465.         CLC                ; Clear carry flag
  2466. LOC_0FA3:
  2467.         POP    AX
  2468.         POP    CX
  2469.         POP    SI
  2470.         POP    DI
  2471.  
  2472. LOC_RET_0FA7:
  2473.         RETN
  2474. SUB_0F76    ENDP
  2475.  
  2476.  
  2477. ;==========================================================================
  2478. ;                   SUBROUTINE
  2479. ;==========================================================================
  2480.  
  2481. SUB_0FA8    PROC    NEAR
  2482.         TEST    BYTE PTR DATA_2888,0FFH    ; (=0)
  2483.         JZ    LOC_RET_0FA7
  2484.         MOV    DI,BP
  2485.         MOV    AL,[DI]
  2486.         AND    AL,1            ; clear all but bit-0
  2487. ;**CHANGED**    MOV    DS:ALTR_B_10AA+1,AL    ; (72B5:10AB=0)
  2488.         MOV    DS:OLD_B_10AB,AL    ; (72B5:10AB=0)
  2489.         JZ    LOC_0FC3
  2490.  
  2491. ALTR_B_0FBA:                    ; Altered code
  2492. ;**CHANGED**    MOV    AL,0
  2493.         MOV    AL,OLD_B_0FBB
  2494.         OR    AL,AL
  2495.         JZ    LOC_0FC3
  2496.         CALL    SUB_1221
  2497. LOC_0FC3:
  2498.         PUSH    WORD PTR [DI+1]
  2499.         MOV    SI,BP
  2500.         MOV    BYTE PTR DATA_2863,0    ; (=0)
  2501. ;**CHANGED**    MOV    AL,DATA_2870        ; (=0FFH)
  2502.         MOV    AL,SW_O_OUTPUT_LST    ; (=0FFH)
  2503.         PUSH    AX
  2504.         OR    AL,AL
  2505.         JZ    LOC_0FD8
  2506. ;**CHANGED**    MOV    AL,DATA_2872        ; (=0FFH)
  2507.         MOV    AL,SW_E_EMBED_REF    ; (=0FFH)
  2508. LOC_0FD8:
  2509. ;**CHANGED**    MOV    DATA_2870,AL        ; (=0FFH)
  2510.         MOV    SW_O_OUTPUT_LST,AL        ; (=0FFH)
  2511.         CALL    SUB_1067
  2512.         XOR    CX,CX
  2513. LOC_0FE0:
  2514.         INC    DATA_2863        ; (=0)
  2515.         MOV    AL,DATA_2863        ; (=0)
  2516.         MOV    BX,8
  2517.         CMP    BYTE PTR DATA_2862,41H    ; (=0) 'A'
  2518.         JNE    LOC_0FF4
  2519.         INC    AL
  2520.         INC    BX
  2521. LOC_0FF4:
  2522.         OR    CX,CX
  2523.         JZ    LOC_100C
  2524.         CMP    AL,9
  2525.         JBE    LOC_1009
  2526.         CALL    WR_CRLF_05AE
  2527.         CALL    SUB_1067
  2528.         MOV    BYTE PTR DATA_2863,2    ; (=0)
  2529.         MOV    CX,BX
  2530. LOC_1009:
  2531.         CALL    SUB_060E
  2532. LOC_100C:
  2533.         CMP    BYTE PTR DATA_2862,41H    ; (=0) 'A'
  2534.         JNE    LOC_1016
  2535.         CALL    WR_L_05B6
  2536. LOC_1016:
  2537.         LODSB                ; String [si] to al
  2538.         LODSW                ; String [si] to ax
  2539.         CALL    SUB_058C
  2540.         MOV    CX,4
  2541.         MOV    AL,[SI-3]
  2542.         TEST    AL,40H            ; '@'
  2543.         JZ    LOC_102D
  2544.         TEST    AL,1
  2545.         JZ    LOC_104D
  2546.         MOV    AL,53H            ; 'S'
  2547.         JMP    SHORT LOC_1049
  2548. LOC_102D:
  2549.         PUSH    AX
  2550.         CALL    SUB_05BF
  2551.         POP    AX
  2552.         MOV    CL,4
  2553.         SHR    AL,CL            ; Shift w/zeros fill
  2554.         AND    AL,3            ; clear all but 2 LSB's
  2555.         MOV    BX,OFFSET DATA_24DC    ; (72B5:24DC=44H)
  2556.         XLAT                ; al=[al+[bx]] table
  2557.         CALL    WR_CHR_AL_05C1
  2558.         DEC    CX
  2559.         MOV    AL,[SI-3]
  2560.         AND    AL,0FH            ; clear high 4-bits
  2561.         MOV    BX,OFFSET DATA_24D3    ; (72B5:24D3=49H)
  2562.         XLAT                ; al=[al+[bx]] table
  2563. LOC_1049:
  2564.         CALL    WR_CHR_AL_05C1
  2565.         DEC    CX
  2566. LOC_104D:
  2567.         CMP    BYTE PTR [SI],3FH    ; '?'
  2568.         JBE    LOC_0FE0
  2569.         CALL    WR_CRLF_05AE
  2570.         POP    AX
  2571. ;**CHANGED**    MOV    DATA_2870,AL        ; (=0FFH)
  2572.         MOV    SW_O_OUTPUT_LST,AL    ; (=0FFH)
  2573.         MOV    BP,SI
  2574.         LODSB                ; String [si] to al
  2575.         TEST    AL,80H
  2576.         JZ    LOC_1065
  2577.         MOV    BYTE PTR DATA_2888,0    ; (=0)
  2578. LOC_1065:
  2579.         POP    DX
  2580.         RETN
  2581. SUB_0FA8    ENDP
  2582.  
  2583.  
  2584. ;==========================================================================
  2585. ;                   SUBROUTINE
  2586. ;==========================================================================
  2587.  
  2588. SUB_1067    PROC    NEAR
  2589.         CMP    BYTE PTR DATA_2862,41H    ; (=0) 'A'
  2590.         JNE    LOC_107B
  2591.         PUSH    CX
  2592.         MOV    CX,6
  2593.  
  2594. LOCLOOP_1072:
  2595.         CALL    SUB_05BC
  2596.         LOOP    LOCLOOP_1072        ; Loop if cx > 0
  2597.  
  2598.         POP    CX
  2599.         JMP    LOC_05B9
  2600. LOC_107B:
  2601.         MOV    BYTE PTR DATA_2848,0    ; (=0)
  2602.         RETN
  2603. SUB_1067    ENDP
  2604.  
  2605.  
  2606. ;==========================================================================
  2607. ;                   SUBROUTINE
  2608. ;==========================================================================
  2609.  
  2610. SUB_1081    PROC    NEAR
  2611.  
  2612. ALTR_J_B_1081:                    ; Altered JMP offset, to 10A7 or 'NOP'
  2613.  
  2614. ;**CHANGED**    JMP    SHORT LOC_RET_10A7
  2615.         TEST    BYTE PTR OLD_JUMP_1082,0FFH
  2616.         JZ    LOC_RET_10A7
  2617.  
  2618. ;==== External Entry into Subroutine ======================================
  2619.  
  2620. SUB_1083:
  2621.  
  2622.                         ; 24H s/b LOC_RET_10A7-SUB_1081-2
  2623. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_1081+1,24H    ; (72B5:1082=24H) '$'
  2624. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_1081+1,LOC_RET_10A7-SUB_1081-2
  2625.         MOV    BYTE PTR DS:OLD_JUMP_1082,0    ;take jump next time
  2626.         PUSH    DI
  2627.         PUSH    DX
  2628.         MOV    SI,OFFSET DATA_2823    ; (=0)
  2629.         MOV    DI,OFFSET FIX_DS_SEG    ; (72B5:2470=30H)
  2630.         MOV    CX,4
  2631.  
  2632. LOCLOOP_1093:
  2633.         PUSH    CX
  2634.         LODSW                ; String [si] to ax
  2635.         XCHG    AX,DX
  2636.         CALL    CNV_W_2_HX_151D
  2637.         POP    CX
  2638.         ADD    DI,6
  2639.         LOOP    LOCLOOP_1093        ; Loop if cx > 0
  2640.  
  2641.         MOV    SI,OFFSET MN_ASSUME    ; (72B5:2464=9)
  2642.         CALL    WR_STRING_0601
  2643.         POP    DX
  2644.         POP    DI
  2645.  
  2646. LOC_RET_10A7:
  2647.         RETN
  2648. SUB_1081    ENDP
  2649.  
  2650.  
  2651. ;==========================================================================
  2652. ;                   SUBROUTINE
  2653. ;==========================================================================
  2654.  
  2655. SUB_10A8    PROC    NEAR
  2656.         PUSH    DX
  2657.         PUSHF
  2658.  
  2659. ALTR_B_10AA:                    ; Altered code
  2660. ;**CHANGED**    MOV    AL,0
  2661.         MOV    AL,OLD_B_10AB
  2662.         TEST    AL,1
  2663.         JZ    LOC_110E
  2664.         MOV    WORD PTR FIX_MN_STK,8A0DH    ; "CR LF", high bit set
  2665.  
  2666. ALTR_B_10B6:                    ; Altered code
  2667. ;**CHANGED**    MOV    AL,0
  2668.         MOV    AL,OLD_B_10B7
  2669.         OR    AL,AL
  2670.         JZ    LOC_10C8
  2671. ALTR_W_10BC:
  2672. ;**CHANGED**    CMP    DX,8888H
  2673.         CMP    DX,OLD_W_10BE
  2674.         JNE    LOC_10C8
  2675.         MOV    WORD PTR FIX_MN_STK,2020H    ; "Space Space"
  2676. LOC_10C8:
  2677.         MOV    AL,53H            ; 'S'
  2678.         CALL    WR_CHR_AL_05C1
  2679. ;CHANGED**    MOV    DS:ALTR_W_1222+1,DX    ; (72B5:1223=0)
  2680.         MOV    DS:OLD_W_1223,DX    ; (72B5:1223=0)
  2681.         CALL    SUB_05A6
  2682.         MOV    SI,OFFSET MN_SEG_STK    ; (72B5:2453=9)
  2683.         CALL    WR_STRING_0601
  2684.         MOV    WORD PTR FIX_MN_STK,8A0DH    ; "CR LF", bit-7 set
  2685. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_B_0FBA+1,0FFH    ; (72B5:0FBB=0)
  2686.         MOV    BYTE PTR DS:OLD_B_0FBB,0FFH    ; (72B5:0FBB=0)
  2687.         TEST    BYTE PTR DATA_2887,7FH    ; (=0)
  2688.         JNZ    LOC_10EF
  2689.         CALL    SUB_1083
  2690. LOC_10EF:
  2691.         OR    DX,DX
  2692.         JNZ    LOC_110E
  2693.         MOV    AX,DATA_285A        ; (=0)
  2694.         OR    AX,AX
  2695.         JZ    LOC_110E
  2696.         PUSH    DX
  2697.         XCHG    AX,DX
  2698.         MOV    SI,OFFSET MN_ORG_$    ; (72B5:2494=9)
  2699.         CALL    WR_STRING_0601
  2700.         CALL    SUB_05A6
  2701.         MOV    AL,48H            ; 'H'
  2702.         CALL    WR_CHR_AL_05C1
  2703.         CALL    WR_CRLF_05AE
  2704.         POP    DX
  2705. LOC_110E:
  2706.         MOV    AX,DATA_2858        ; (=0)
  2707.         TEST    DATA_284D,0FFFFH    ; (72B5:284D=0)
  2708.         JZ    LOC_111D
  2709.         CMP    AX,DX
  2710.         JE    LOC_1122
  2711. LOC_111D:
  2712.         CALL    SUB_119B
  2713.         JMP    SHORT LOC_1198
  2714. LOC_1122:
  2715.         PUSH    SI
  2716. ALTR_W_1123:
  2717. ;**CHANGED**    MOV    SI,0
  2718.         MOV    SI,OLD_W_1124
  2719.         CMP    DX,[SI-4]
  2720.         JNE    LOC_1185
  2721.         TEST    BYTE PTR [SI-1],0FFH
  2722.         JZ    LOC_1185
  2723.         PUSH    DX
  2724.         MOV    DL,[SI-1]
  2725.         TEST    DL,80H
  2726.         JZ    LOC_1150
  2727.         PUSH    SI
  2728.         XOR    DX,DX
  2729. LOC_113D:
  2730.         LODSB                ; String [si] to al
  2731.         INC    DX
  2732.         TEST    AL,80H
  2733.         JZ    LOC_113D
  2734.         CALL    WR_SEMI_05B9
  2735.         CALL    SUB_05BC
  2736.         CALL    WR_STRING_0601
  2737.         CALL    WR_CRLF_05AE
  2738.         POP    SI
  2739. LOC_1150:
  2740.         CMP    BYTE PTR [SI],0AEH
  2741.         JE    LOC_1184
  2742.         POP    AX
  2743.         CALL    WR_STRING_0601
  2744.         TEST    BYTE PTR DATA_2887,0FH    ; (=0)
  2745.         JNZ    LOC_1167
  2746.         INC    DL
  2747.         MOV    AL,3AH            ; ':'
  2748.         CALL    WR_CHR_AL_05C1
  2749. LOC_1167:
  2750.         CMP    DL,7
  2751.         JBE    LOC_1181
  2752.         TEST    BYTE PTR DATA_2887,0FH    ; (=0)
  2753.         JZ    LOC_117E
  2754.         MOV    SI,OFFSET DATA_218C_EQU    ; (72B5:218C=9)
  2755.         CALL    WR_STRING_0601
  2756.         MOV    AL,24H            ; '$'
  2757.         CALL    WR_CHR_AL_05C1
  2758. LOC_117E:
  2759.         CALL    WR_CRLF_05AE
  2760. LOC_1181:
  2761.         POP    SI
  2762.         JMP    SHORT LOC_1198
  2763. LOC_1184:
  2764.         POP    DX
  2765. LOC_1185:
  2766.         POP    SI
  2767.         CALL    WR_L_05B6
  2768.         CALL    SUB_05A6
  2769.         TEST    BYTE PTR DATA_2887,0FH    ; (=0)
  2770.         JNZ    LOC_1198
  2771.         MOV    AL,3AH            ; ':'
  2772.         CALL    WR_CHR_AL_05C1
  2773. LOC_1198:
  2774.         POPF
  2775.         POP    DX
  2776.         RETN
  2777. SUB_10A8    ENDP
  2778.  
  2779.  
  2780. ;==========================================================================
  2781. ;                   SUBROUTINE
  2782. ;==========================================================================
  2783.  
  2784. SUB_119B    PROC    NEAR
  2785.         PUSH    DX
  2786. ;**CHANGED**    MOV    DI,OFFSET DATA_298B    ; 132-byte line buffer
  2787.         MOV    DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  2788.         PUSH    DI
  2789.         PUSH    AX
  2790. ;**CHANGED**    MOV    SI,DS:ALTR_W_1123+1    ; (72B5:1124=0)
  2791.         MOV    SI,DS:OLD_W_1124    ; (72B5:1124=0)
  2792.         CMP    DX,[SI-4]
  2793.         JNE    LOC_11B5
  2794.         TEST    BYTE PTR [SI-1],0FFH
  2795.         JZ    LOC_11B5
  2796.         CALL    WRT_STRING_18A4
  2797.         JMP    SHORT LOC_11BB
  2798. LOC_11B5:
  2799.         MOV    AL,4CH            ; 'L'
  2800.         STOSB                ; Store al to es:[di]
  2801.         CALL    CNV_W_2_HX_151D
  2802. LOC_11BB:
  2803.         MOV    SI,OFFSET DATA_218C_EQU    ; (72B5:218C=9)
  2804.         CALL    WRT_STRING_18A4
  2805.         POP    AX
  2806.         SUB    AX,DX
  2807.         XCHG    AX,DX
  2808.         MOV    AL,24H            ; '$'
  2809.         MOV    AH,2DH            ; '-'
  2810.         OR    DH,DH
  2811.         JNS    LOC_11D1        ; Jump if not sign
  2812.         MOV    AH,2BH            ; '+'
  2813.         NEG    DX
  2814. LOC_11D1:
  2815.         STOSW                ; Store ax to es:[di]
  2816.         CALL    SUB_1345
  2817.         CALL    SUB_136C
  2818.         MOV    BYTE PTR [DI],0
  2819.         POP    SI
  2820.         CALL    WR_STRING_0601
  2821.         CALL    WR_CRLF_05AE
  2822.         POP    DX
  2823.         RETN
  2824. SUB_119B    ENDP
  2825.  
  2826.  
  2827. ;==========================================================================
  2828. ;                   SUBROUTINE
  2829. ;==========================================================================
  2830.  
  2831. SUB_11E4    PROC    NEAR
  2832.         MOV    AL,2DH            ; '-'
  2833.         STOSB                ; Store al to es:[di]
  2834.  
  2835. ;==== External Entry into Subroutine ======================================
  2836.  
  2837. SUB_11E7:
  2838.         PUSH    CX
  2839.         PUSH    SI
  2840.         MOV    SI,OFFSET LOC_1215
  2841.         MOV    CX,5
  2842. LOC_11EF:
  2843.         MOV    AL,0
  2844.         ADD    SI,2
  2845. LOC_11F4:
  2846.         SUB    BX,[SI]
  2847.         JC    LOC_11FC
  2848.         INC    AL
  2849.         JMP    SHORT LOC_11F4
  2850. LOC_11FC:
  2851.         ADD    BX,[SI]
  2852.         OR    AL,30H            ; '0'
  2853.         OR    CH,CH
  2854.         JNZ    LOC_1208
  2855.         TEST    AL,0FH
  2856.         JZ    LOC_120B
  2857. LOC_1208:
  2858.         STOSB                ; Store al to es:[di]
  2859.         INC    CH
  2860. LOC_120B:
  2861.         DEC    CL
  2862.         JNZ    LOC_11EF
  2863.         OR    CH,CH
  2864.         JNZ    LOC_1214
  2865.         STOSB                ; Store al to es:[di]
  2866. LOC_1214:
  2867.         POP    SI
  2868. LOC_1215:
  2869.         POP    CX
  2870.         RETN
  2871. SUB_11E4    ENDP
  2872.  
  2873. DATA_1217    DW    2710H, 3E8H, 64H
  2874.         DW    0AH, 1
  2875.  
  2876. ;==========================================================================
  2877. ;                   SUBROUTINE
  2878. ;==========================================================================
  2879.  
  2880. SUB_1221    PROC    NEAR
  2881.         PUSH    DX
  2882. ALTR_W_1222:
  2883. ;**CHANGED**    MOV    DX,0
  2884.         MOV    DX,OLD_W_1223
  2885.         CALL    SUB_05BC
  2886.         MOV    AL,53H            ; 'S'
  2887.         CALL    WR_CHR_AL_05C1
  2888.         CALL    SUB_05A6
  2889.         MOV    SI,OFFSET DATA_2182    ; (72B5:2182=9)
  2890.         CALL    WR_STRING_0601
  2891.         POP    DX
  2892.         RETN
  2893. SUB_1221    ENDP
  2894.  
  2895.  
  2896. ;==========================================================================
  2897. ;         Read byte and    skip over Space or Tab
  2898. ;==========================================================================
  2899.  
  2900. RD_SK_SPTB_1238    PROC    NEAR
  2901. LOC_1238:
  2902.         CALL    RD_NXT_BYT_1B1B
  2903.         CMP    AL,20H            ; ' '
  2904.         JE    LOC_1238
  2905.         CMP    AL,9
  2906.         JE    LOC_1238
  2907.         RETN
  2908. RD_SK_SPTB_1238    ENDP
  2909.  
  2910.         DB    10,'Op-codes '
  2911.  
  2912. ;==========================================================================
  2913. ;                   SUBROUTINE
  2914. ;==========================================================================
  2915. ; op-codes: 26, 2E, 36, 3E
  2916.  
  2917. OP_1250        PROC    NEAR
  2918. LOC_1250:
  2919.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  2920.         JZ    LOC_125A
  2921.         JMP    LOC_17D1
  2922. LOC_125A:
  2923.         MOV    DATA_2866,AL        ; (=0)
  2924.         SHL    AL,1            ; Shift w/zeros fill
  2925.         NOT    AL
  2926.         AND    AL,30H            ; clear all but bits 4 & 5
  2927.         MOV    OPJ_HI_BYT_2869,AL    ; (72B5:2869=0)
  2928.         JMP    SHORT LOC_1277
  2929.  
  2930. ;==== External Entry into Subroutine ======================================
  2931. ; op-codes: F0, F2, F3
  2932.  
  2933. OP_1268:
  2934.         MOV    SI,OPW_TBL_WD_285F    ; (72B5:285F=0)
  2935.         AND    SI,0FFFH        ; clear high 4-bits
  2936.         ADD    SI,OFFSET MN_AAA    ; (72B5:20F4=41H)
  2937.         CALL    WR_STRING_0601
  2938.  
  2939. ;==== External Entry into Subroutine ======================================
  2940.  
  2941. SUB_1277:
  2942. LOC_1277:
  2943.         CALL    RD_NXT_BYT_1B1B
  2944.         MOV    AH,0
  2945.         MOV    BX,AX
  2946.         MOV    OPCODE_BYT_286B,AL    ; (72B5:286B=0)
  2947.         ADD    BX,BX
  2948.         ADD    BX,BX
  2949.         ADD    BX,OFFSET OPW_00_ADD    ; Op-code Dispatch Table
  2950.         MOV    CX,[BX]
  2951.         MOV    OPW_TBL_WD_285F,CX    ; (72B5:285F=0)
  2952.         MOV    DH,0F0H            ; mask for AND 
  2953.         AND    DH,CH            ; keep high 4-bits
  2954.         MOV    OPW_HI_NBL_286A,DH    ; (72B5:286A=0)
  2955.         AND    BYTE PTR OPW_HI_NBL_286A,0F0H    ; (72B5:286A=0)
  2956. ;**CHANGED**    MOV    DI,OFFSET DATA_298B    ; 132-byte line buffer
  2957.         MOV    DI,OFFSET LINE_BUF_132CHR ; 132-byte line buffer
  2958.         MOV    BX,[BX+2]
  2959.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  2960.         JNZ    LOC_12AD
  2961.         MOV    OPJ_HI_BYT_2869,BH    ; (72B5:2869=0)
  2962. LOC_12AD:
  2963.         AND    BH,0FH            ; keep low 12-bits of BX
  2964. ;**CHANGED**    ADD    BX,WORD PTR OPJ_BASE_288B    ; (72B5:288B=1250H)
  2965.         ADD    BX,OFFSET LOC_1250    ; beginning of op-code handlers
  2966.         XCHG    CX,BX
  2967.  
  2968.                         ; Op-code byte (X4) is index
  2969.         JMP    CX            ;*Register jump
  2970.         DB    10,'Dispatch '
  2971. ;==== External Entry into Subroutine ======================================
  2972. ; op-codes: 80-82
  2973.  
  2974. OP_12B8:
  2975.         CALL    SUB_17E6
  2976. LOC_12BB:
  2977.         CALL    SUB_18B0
  2978.         JMP    SHORT LOC_1322
  2979.  
  2980. ;==== External Entry into Subroutine ======================================
  2981. ; op-codes: 83
  2982.  
  2983. OP_12C0:
  2984.         CALL    SUB_17E6
  2985.         CALL    SUB_18B0
  2986.         MOV    AL,2CH            ; ','
  2987.         STOSB                ; Store al to es:[di]
  2988.         CALL    RD_NXT_BYT_1B1B
  2989.         CBW                ; Convrt byte to word
  2990.         XCHG    AX,DX
  2991.         MOV    BYTE PTR OPW_HI_NBL_286A,0    ; (72B5:286A=0)
  2992.         CALL    SUB_1420
  2993.         CALL    SUB_13CB
  2994.         OR    DH,DH
  2995.         JNZ    LOC_12DE
  2996.         RETN
  2997. LOC_12DE:
  2998.         DEC    DI
  2999.         CMP    BYTE PTR [DI-1],2CH    ; ','
  3000.         JNE    LOC_12DE
  3001.         NEG    DX
  3002.         MOV    AL,2DH            ; '-'
  3003.         STOSB                ; Store al to es:[di]
  3004.         JMP    SHORT LOC_1345
  3005.     ;***    DB    90H
  3006.  
  3007. ;==== External Entry into Subroutine ======================================
  3008. ; op-codes: C4, C5
  3009.  
  3010. OP_12ED:
  3011.         CALL    PARS_MOD_B_1836
  3012.         CALL    SUB_1551
  3013.         MOV    AL,2CH            ; ','
  3014.         STOSB                ; Store al to es:[di]
  3015.         MOV    SI,OFFSET DATA_2174    ; (72B5:2174=44H)
  3016.         CALL    WRT_STRING_18A4
  3017.         JMP    LOC_18BA
  3018.  
  3019. ;==== External Entry into Subroutine ======================================
  3020. ; op-codes: C6, C7
  3021.  
  3022. OP_12FF:
  3023.         CALL    PARS_MOD_B_1836
  3024.         OR    AL,AL
  3025.         JZ    LOC_12BB
  3026.         JMP    LOC_17FE
  3027.  
  3028. ;==== External Entry into Subroutine ======================================
  3029. ; op-codes: C2
  3030.  
  3031. OP_1309:
  3032.         MOV    BX,OFFSET MAC_RET_NEAR_P    ; (72B5:258B=0)
  3033.         JMP    SHORT LOC_1311
  3034.  
  3035. ;==== External Entry into Subroutine ======================================
  3036. ; op-codes: CA
  3037.  
  3038. OP_130E:
  3039.         MOV    BX,OFFSET MAC_RET_FAR_P    ; (72B5:253A=0)
  3040. LOC_1311:
  3041.         MOV    BYTE PTR [BX],1
  3042.         CALL    SUB_1B10
  3043.         INC    DATA_285C        ; (=0)
  3044.         JMP    SHORT LOC_1342
  3045.  
  3046. ;==== External Entry into Subroutine ======================================
  3047. ; op-codes: 04, 05, 0C, 0D, 14, 15, 1C, 1D, 24, 25, 2C, 2D, 34, 35, 3C, 3D,
  3048. ; A8, A9, A8, A9
  3049.  
  3050. OP_131D:
  3051.         MOV    AL,0
  3052. LOC_131F:
  3053.         CALL    SUB_1554
  3054. LOC_1322:
  3055.         MOV    AL,2CH            ; ','
  3056.         STOSB                ; Store al to es:[di]
  3057.         TEST    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3058.         JZ    LOC_132F
  3059.         JMP    LOC_13C3
  3060.  
  3061. ;==== External Entry into Subroutine ======================================
  3062.  
  3063. SUB_132F:
  3064. LOC_132F:
  3065.         CALL    RD_NXT_BYT_1B1B
  3066.  
  3067. ;==== External Entry into Subroutine ======================================
  3068.  
  3069. SUB_1332:
  3070. LOC_1332:
  3071.         MOV    BYTE PTR OPW_HI_NBL_286A,0    ; (72B5:286A=0)
  3072.  
  3073. ;==== External Entry into Subroutine ======================================
  3074.  
  3075. SUB_1337:
  3076.         MOV    AH,0
  3077.         MOV    DX,AX
  3078. ;**CHANGED**    TEST    BYTE PTR DATA_2876,0FFH    ; (=0FFH)
  3079.         TEST    BYTE PTR SW_B_BYTE_REFS,0FFH    ; (=0FFH)
  3080.         JZ    LOC_1345
  3081.  
  3082. ;==== External Entry into Subroutine ======================================
  3083.  
  3084. SUB_1342:
  3085. LOC_1342:
  3086.         CALL    SUB_0EAB
  3087.  
  3088. ;==== External Entry into Subroutine ======================================
  3089.  
  3090. SUB_1345:
  3091. LOC_1345:
  3092.         OR    DX,DX
  3093.         JZ    LOC_1386
  3094.         CALL    SUB_138A
  3095.         CMP    DX,0AH
  3096.         JB    LOC_RET_1385
  3097.         MOV    AL,DL
  3098.         CALL    SUB_1A7D
  3099.         JNC    LOC_136C
  3100.         PUSH    DI
  3101.         MOV    DI,OFFSET DATA_287C    ; (72B5:287C=48H)
  3102.         MOV    AH,27H            ; ''' single quote
  3103.         CMP    AL,AH            ; number TEN
  3104.         JNE    LOC_1364
  3105.         MOV    AH,22H            ; '"' double quote
  3106. LOC_1364:
  3107.         MOV    [DI-1],AH
  3108.         OR    AH,80H            ; set bit-7
  3109.         STOSW                ; Store ax to es:[di]
  3110.         POP    DI
  3111.  
  3112. ;==== External Entry into Subroutine ======================================
  3113.  
  3114. SUB_136C:
  3115. LOC_136C:
  3116.         MOV    AL,[DI-1]
  3117.         CMP    AL,48H            ; 'H'
  3118.         JE    LOC_RET_1385
  3119. ;**CHANGED**    TEST    BYTE PTR RAD16_FLAG_2877,0FFH    ; (72B5:2877=0FFH)
  3120.         TEST    BYTE PTR SW_H_HEX_SUFFIX,0FFH    ; (72B5:2877=0FFH)
  3121.         JZ    LOC_1382
  3122.         CMP    AL,42H            ; 'B'
  3123.         JE    LOC_1382
  3124.         CMP    AL,44H            ; 'D'
  3125.         JNE    LOC_RET_1385
  3126. LOC_1382:
  3127.         MOV    AL,48H            ; 'H'
  3128.         STOSB                ; Store al to es:[di]
  3129.  
  3130. LOC_RET_1385:
  3131.         RETN
  3132. LOC_1386:
  3133.         MOV    AL,30H            ; '0'
  3134.         STOSB                ; Store al to es:[di]
  3135.         RETN
  3136.  
  3137. ;==== External Entry into Subroutine ======================================
  3138. ; Convert word in DX to ASCII HEX and write to file
  3139.  
  3140. SUB_138A:
  3141. ;**LOC_138A:
  3142.         MOV    BYTE PTR DATA_13C2,0    ; zero suppress flag = true
  3143.         MOV    AL,DH            ; to convert high byte
  3144.         CALL    SUB_1396
  3145.         MOV    AL,DL            ; to convert low byte
  3146.  
  3147. ;==== External Entry into Subroutine ======================================
  3148. ; Convert byte in AL to ASCII HEX and write to file
  3149.  
  3150. SUB_1396:
  3151.         MOV    AH,AL            ; save low nyble
  3152.         MOV    CL,4            ; shift high nyble right
  3153.         SHR    AL,CL            ; Shift w/zeros fill
  3154.         CALL    SUB_13A1        ; convert nyble to ASCII
  3155.         MOV    AL,AH            ; convert nyble to ASCII
  3156.  
  3157. ;==== External Entry into Subroutine ======================================
  3158. ; Convert nyble to ASCII HEX and write to file
  3159.  
  3160. SUB_13A1:
  3161.         AND    AL,0FH            ; clear high 4-bits
  3162.         TEST    BYTE PTR DATA_13C2,0FFH    ; suppress zero?
  3163.         JNZ    LOC_13BA
  3164.         OR    AL,AL
  3165.         JNZ    LOC_13AF
  3166.         RETN
  3167. LOC_13AF:
  3168.         MOV    DATA_13C2,AL        ; zero suppress flag
  3169.         CMP    AL,0AH            ; number TEN
  3170.         JB    LOC_13BA
  3171.         MOV    BYTE PTR [DI],30H    ; '0'
  3172.         INC    DI
  3173. LOC_13BA:
  3174.         ADD    AL,90H
  3175.         DAA                ; Decimal adjust
  3176.         ADC    AL,40H            ; '@'
  3177.         DAA                ; Decimal adjust
  3178.         STOSB                ; Store al to es:[di]
  3179.  
  3180. LOC_RET_13C1:
  3181.         RETN
  3182.  
  3183. DATA_13C2    DB    0            ; zero suppress flag
  3184.  
  3185. ;==========================================================================
  3186. LOC_13C3:
  3187.         MOV    BYTE PTR OPW_HI_NBL_286A,0    ; (72B5:286A=0)
  3188.         CALL    SUB_141D
  3189. OP_1250        ENDP
  3190.  
  3191.  
  3192. ;==========================================================================
  3193. ;                   SUBROUTINE
  3194. ;==========================================================================
  3195.  
  3196. SUB_13CB    PROC    NEAR
  3197.         MOV    AL,DL
  3198.         CALL    SUB_1A7D
  3199.         JNC    LOC_RET_13C1
  3200.         MOV    AL,DH
  3201.         CALL    SUB_1A7D
  3202.         JNC    LOC_RET_13C1
  3203.         MOV    AH,DL
  3204.         PUSH    DI
  3205.         PUSH    BX
  3206.         MOV    DI,OFFSET DATA_287C    ; (72B5:287C=48H)
  3207.         MOV    BL,27H            ; '''
  3208.         CMP    AL,BL
  3209.         JE    LOC_13EA
  3210.         CMP    AH,BL
  3211.         JNE    LOC_13EC
  3212. LOC_13EA:
  3213.         MOV    BL,22H            ; '"'
  3214. LOC_13EC:
  3215.         MOV    [DI-1],BL
  3216.         STOSW                ; Store ax to es:[di]
  3217.         XCHG    AX,BX
  3218.         OR    AL,80H
  3219.         STOSB                ; Store al to es:[di]
  3220.         POP    BX
  3221.         POP    DI
  3222.         RETN
  3223. SUB_13CB    ENDP
  3224.  
  3225.         DB    0FEH, 6, 5CH, 28H    ; (apparemtly unused)
  3226.  
  3227. ;==========================================================================
  3228. ;                   SUBROUTINE
  3229. ;==========================================================================
  3230. ; op-codes: 9A, EA
  3231.  
  3232. OP_13FB        PROC    NEAR
  3233.         CALL    SUB_1B10
  3234.         XCHG    BX,DX
  3235.         CALL    SUB_1B10
  3236.         MOV    CL,4
  3237.         PUSH    DX
  3238.         SHL    DX,CL            ; Shift w/zeros fill
  3239.         ADD    BX,DX
  3240.         XCHG    BX,DX
  3241.         CALL    SUB_14C8
  3242.         POP    DX
  3243.         CALL    SUB_1420
  3244.         SUB    DI,5
  3245.         RETN
  3246. OP_13FB        ENDP
  3247.  
  3248.  
  3249. ;==========================================================================
  3250. ;                   SUBROUTINE
  3251. ;==========================================================================
  3252. ; op-codes: A0, A1
  3253.  
  3254. OP_1417        PROC    NEAR
  3255.         CALL    SUB_15FA
  3256.         MOV    AL,2CH            ; ','
  3257.         STOSB                ; Store al to es:[di]
  3258.  
  3259. ;==== External Entry into Subroutine ======================================
  3260.  
  3261. SUB_141D:
  3262. LOC_141D:
  3263.         CALL    SUB_1B10
  3264.  
  3265. ;==== External Entry into Subroutine ======================================
  3266.  
  3267. SUB_1420:
  3268. ;**CHANGED**    MOV    DS:ALTR_W_0945+1,DX    ; (72B5:0946=0)
  3269.         MOV    DS:OLD_W_0946,DX    ; (72B5:0946=0)
  3270.         PUSH    BX
  3271.         MOV    BL,OPJ_HI_BYT_2869    ; (72B5:2869=0)
  3272.         TEST    BL,80H
  3273.         JNZ    LOC_1446        ; jump if bit-7=1
  3274.         AND    BL,30H            ; clear all but bits 4 & 5
  3275.         MOV    CL,3            ; align as word index value
  3276.         SHR    BL,CL            ; Shift w/zeros fill
  3277.         MOV    BH,0
  3278.         MOV    AX,DATA_2823[BX]    ; 4-words indexed
  3279.         OR    AX,AX
  3280.         JZ    LOC_1446
  3281.         ADD    DX,AX
  3282. ;**CHANGED**    MOV    BYTE PTR DS:ALTR_J_B_0943+1,0    ; (72B5:0944=0AH)
  3283.         MOV    BYTE PTR DS:OLD_JUMP_0944,0FFH    ; don't take jump
  3284. LOC_1446:
  3285.         POP    BX
  3286.  
  3287. ;==== External Entry into Subroutine ======================================
  3288.  
  3289. SUB_1447:
  3290. LOC_1447:
  3291.         CALL    SUB_181D
  3292.         PUSH    DI
  3293.         MOV    DI,DATA_288D        ; (=0)
  3294.         CMP    DI,DATA_2893        ; (=0)
  3295.         JAE    LOC_147C
  3296.         MOV    AX,[DI]
  3297.         CMP    AX,DATA_2858        ; (=0)
  3298.         POP    DI
  3299.         JNC    LOC_147B
  3300. ;**CHANGED**    MOV    DX,DS:ALTR_W_0945+1    ; (72B5:0946=0)
  3301.         MOV    DX,DS:OLD_W_0946    ; (72B5:0946=0)
  3302.         TEST    DX,0F000H
  3303.         JZ    LOC_146E
  3304.         MOV    AX,3F09H        ; "TAB ?"
  3305.         STOSW                ; Store ax to es:[di]
  3306.         JMP    SHORT LOC_1472
  3307. LOC_146E:
  3308.         MOV    CL,4
  3309.         SHL    DX,CL            ; Shift w/zeros fill
  3310. LOC_1472:
  3311. ;**CHANGED**    MOV    DS:ALTR_W_09A0+1,DX    ; (72B5:09A1=0)
  3312.         MOV    DS:OLD_W_09A1,DX    ; (72B5:09A1=0)
  3313.         MOV    AL,53H            ; 'S'
  3314.         JMP    LOC_1519
  3315. LOC_147B:
  3316.         PUSH    DI
  3317. LOC_147C:
  3318.         CALL    SUB_0E70
  3319.         TEST    BYTE PTR [DI],20H    ; ' '
  3320.         POP    DI
  3321.         JZ    LOC_148F
  3322. ;**CHANGED**    TEST    BYTE PTR DATA_2873,0FFH    ; (=0FFH)
  3323.         TEST    BYTE PTR SW_L_LABEL_NUMB,0FFH    ; (=0FFH)
  3324.         JNZ    LOC_148F
  3325.         JMP    LOC_1345
  3326. LOC_148F:
  3327.         MOV    AL,OPW_HI_NBL_286A    ; (72B5:286A=0)
  3328.         MOV    AH,DATA_2887        ; (=0)
  3329.         CMP    DX,DATA_285A        ; (=0)
  3330.         JAE    LOC_14B8
  3331.         OR    AH,AH
  3332.         JNZ    LOC_14C8
  3333.         OR    AL,AL
  3334.         JZ    LOC_14B5
  3335.         CMP    AL,60H            ; '`'
  3336.         JA    LOC_14C8
  3337.         CMP    BYTE PTR [DI-1],3AH    ; ':'
  3338.         JE    LOC_14B5
  3339.         MOV    AX,5344H        ; 'DS'
  3340.         STOSW                ; Store ax to es:[di]
  3341.         MOV    AL,3AH            ; ':'
  3342.         STOSB                ; Store al to es:[di]
  3343. LOC_14B5:
  3344.         JMP    LOC_1342
  3345. LOC_14B8:
  3346.         OR    AX,AX
  3347.         JNZ    LOC_14C8
  3348.         CMP    DX,0FFFFH        ; test for 0FFFF (s/b H)
  3349.     ;***    nop                ;*Fixup for MASM (M)
  3350.         PATCH83    0FFH            ;PATCH83 edited in
  3351. ;**FIXED**    JE    LOC_1514
  3352.         JNE    LOC_14BC_X        ; jump, could be label
  3353.  
  3354.         ; new code to correct the 0FFFF 'H' suffix (JEG)
  3355.         CALL    SUB_138A        ; convert 0FFFF to HEX
  3356.         MOV    AL,'H'            ; output 'H' Hex suffix
  3357.         STOSB
  3358.         RETN
  3359.  
  3360. LOC_14BC_X:    MOV    SI,OFFSET MN_OFFSET    ; (72B5:23A4=4FH)
  3361.         CALL    WRT_STRING_18A4
  3362.  
  3363. ;==== External Entry into Subroutine ======================================
  3364.  
  3365. SUB_14C8:
  3366. LOC_14C8:
  3367.         CMP    BYTE PTR DATA_2861,2    ; (=0)
  3368.         JE    LOC_14D9
  3369.         TEST    BYTE PTR DATA_2887,80H    ; (=0)
  3370.         JNZ    LOC_RET_1501
  3371.         JMP    LOC_0EAB
  3372. LOC_14D9:
  3373.         CALL    SUB_1B70
  3374.         JC    LOC_150D
  3375.         JZ    LOC_1502
  3376.         TEST    BYTE PTR OPW_HI_NBL_286A,0FFH    ; (72B5:286A=0)
  3377.         JZ    LOC_14F2
  3378.         CMP    BYTE PTR [SI-2],3
  3379.         JNE    LOC_14F2
  3380.         PUSH    SI
  3381.         CALL    SUB_1897
  3382.         POP    SI
  3383. LOC_14F2:
  3384.         PUSH    SI
  3385.         CALL    WRT_STRING_18A4
  3386.         POP    AX
  3387.         XCHG    AX,SI
  3388.         TEST    BYTE PTR [SI-1],80H
  3389.         JZ    LOC_RET_1501
  3390. ;**CHANGED**    MOV    DS:ALTR_W_09E2+1,AX    ; (72B5:09E3=0FFFFH)
  3391.         MOV    DS:OLD_W_09E3,AX    ; (72B5:09E3=0FFFFH)
  3392.  
  3393. LOC_RET_1501:
  3394.         RETN
  3395.  
  3396. LOC_1502:
  3397.         TEST    BYTE PTR [SI-1],80H
  3398.         JZ    LOC_150D
  3399.         INC    SI
  3400. ;**CHANGED**    MOV    DS:ALTR_W_09E2+1,SI    ; (72B5:09E3=0FFFFH)
  3401.         MOV    DS:OLD_W_09E3,SI    ; (72B5:09E3=0FFFFH)
  3402. LOC_150D:
  3403.         TEST    BYTE PTR DATA_2887,80H    ; (=0)
  3404.         JZ    LOC_1517
  3405.  
  3406. ;**LOC_1514:
  3407. ;**FIXED**    JMP    LOC_138A        ; convert DX to ASCII HEX
  3408.         ; new code to correct the 'D' command 'H' suffix (JEG)
  3409.         CALL    SUB_138A        ; convert number to HEX
  3410.         MOV    AL,'H'            ; output 'H' Hex suffix
  3411.         STOSB
  3412.         RETN
  3413.  
  3414. LOC_1517:
  3415.         MOV    AL,4CH            ; 'L'
  3416. LOC_1519:
  3417.         STOSB                ; Store al to es:[di]
  3418.         CALL    SUB_0EAB
  3419. OP_1417        ENDP
  3420.  
  3421.  
  3422. ;==========================================================================
  3423. ;         Convert word in DX to HEX, store [DI]
  3424. ;==========================================================================
  3425.  
  3426. CNV_W_2_HX_151D    PROC    NEAR
  3427.         MOV    AL,DH
  3428.         CALL    CNV_B_2_HX_1524
  3429.         MOV    AL,DL
  3430.  
  3431. ;==== External Entry into Subroutine ======================================
  3432. ;
  3433. ;         Convert byte in AL to HEX, store [DI]
  3434.  
  3435. CNV_B_2_HX_1524:
  3436.         MOV    AH,AL
  3437.         SHR    AL,1            ; Shift w/zeros fill
  3438.         SHR    AL,1            ; Shift w/zeros fill
  3439.         SHR    AL,1            ; Shift w/zeros fill
  3440.         SHR    AL,1            ; Shift w/zeros fill
  3441.         CALL    SUB_1533
  3442.         MOV    AL,AH
  3443.  
  3444. ;==== External Entry into Subroutine ======================================
  3445.  
  3446. SUB_1533:                    ; convert low 4-bits to ASCII
  3447.         AND    AL,0FH            ; clear high 4-bits
  3448.         ADD    AL,90H
  3449.         DAA                ; Decimal adjust
  3450.         ADC    AL,40H            ; '@'
  3451.         DAA                ; Decimal adjust
  3452.         STOSB                ; Store al to es:[di]
  3453.         RETN
  3454. CNV_W_2_HX_151D    ENDP
  3455.  
  3456.  
  3457. ;==========================================================================
  3458. ;                   SUBROUTINE
  3459. ;==========================================================================
  3460. ; op-codes: D4, D5
  3461.  
  3462. OP_153D        PROC    NEAR
  3463.         CALL    RD_NXT_BYT_1B1B
  3464.         CMP    AL,0AH
  3465.         JNE    LOC_1545
  3466.         RETN
  3467. LOC_1545:
  3468.         JMP    LOC_1810
  3469. OP_153D        ENDP
  3470.  
  3471.  
  3472. ;==========================================================================
  3473. ;                   SUBROUTINE
  3474. ;==========================================================================
  3475. ; op-codes: 00, 01, 08, 09, 10, 11, 18, 19, 20, 21, 28, 29, 30, 31, 38, 39,
  3476. ; 88, 89
  3477.  
  3478. OP_1548        PROC    NEAR
  3479.         CALL    PARS_MOD_B_1836
  3480.         CALL    SUB_18BA
  3481.         MOV    AL,2CH            ; ','
  3482.         STOSB                ; Store al to es:[di]
  3483.  
  3484. ;==== External Entry into Subroutine ======================================
  3485.  
  3486. SUB_1551:
  3487.         MOV    AL,REG_FIELD_2845    ; (72B5:2845=0)
  3488.  
  3489. ;==== External Entry into Subroutine ======================================
  3490.  
  3491. SUB_1554:
  3492. LOC_1554:
  3493.         MOV    SI,OFFSET BYTE_REGS_249B    ; (72B5:249B=41H)
  3494.         TEST    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3495.         JZ    LOC_1561
  3496.  
  3497. ;==== External Entry into Subroutine ======================================
  3498. ; op-codes: 40-4F, 50-5F
  3499.  
  3500. OP_155E:
  3501. LOC_155E:
  3502.         MOV    SI,OFFSET WORD_REGS_24AB    ; (72B5:24AB=41H)
  3503. LOC_1561:
  3504.         AND    AL,7            ; clear high 5-bits
  3505.         CBW                ; Convrt byte to word
  3506.         ADD    SI,AX
  3507.         ADD    SI,AX
  3508.         MOVSW                ; Mov [si] to es:[di]
  3509.         RETN
  3510. OP_1548        ENDP
  3511.  
  3512.  
  3513. ;==========================================================================
  3514. ;                   SUBROUTINE
  3515. ;==========================================================================
  3516. ; op-codes: 06, 07, 0E, 16, 17, 1E, 1F,
  3517.  
  3518. OP_156A        PROC    NEAR
  3519.         MOV    CL,3
  3520.         SHR    AL,CL            ; Shift w/zeros fill
  3521.  
  3522. ;==== External Entry into Subroutine ======================================
  3523.  
  3524. SUB_156E:
  3525. LOC_156E:
  3526.         AND    AL,3            ; clear all but 2-LSB's
  3527.         MOV    SI,OFFSET SEG_REGS_24BB    ; (72B5:24BB=45H)
  3528.         JMP    SHORT LOC_1561
  3529. OP_156A        ENDP
  3530.  
  3531.  
  3532. ;==========================================================================
  3533. ;                   SUBROUTINE
  3534. ;==========================================================================
  3535. ; op-codes: 8C
  3536.  
  3537. OP_1575        PROC    NEAR
  3538.         MOV    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3539.         CALL    PARS_MOD_B_1836
  3540.         CMP    AL,4
  3541.         JB    LOC_1584
  3542. LOC_1581:
  3543.         JMP    LOC_17FE
  3544. LOC_1584:
  3545.         CALL    SUB_18BA
  3546.         MOV    AL,2CH            ; ','
  3547.         STOSB                ; Store al to es:[di]
  3548.         MOV    AL,REG_FIELD_2845    ; (72B5:2845=0)
  3549.         JMP    SHORT LOC_156E
  3550.  
  3551. ;==== External Entry into Subroutine ======================================
  3552. ; op-codes: 8E
  3553.  
  3554. OP_158F:
  3555.         CALL    PARS_MOD_B_1836
  3556.         CMP    AL,4
  3557.         JAE    LOC_1581
  3558.         CALL    SUB_156E
  3559.         MOV    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3560.         JMP    SHORT LOC_15B4
  3561.  
  3562. ;==== External Entry into Subroutine ======================================
  3563. ; op-codes: 8F
  3564.  
  3565. OP_15A0:
  3566.         CALL    PARS_MOD_B_1836
  3567.         OR    AL,AL
  3568.         JNZ    LOC_1581
  3569.         JMP    SHORT LOC_15B7
  3570.  
  3571. ;==== External Entry into Subroutine ======================================
  3572. ; op-codes: 8D
  3573.  
  3574. OP_15A9:
  3575.         OR    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3576.  
  3577. ;==== External Entry into Subroutine ======================================
  3578. ; op-codes: 02, 03, 0A, 0B, 12, 13, 1A, 1B, 22, 23, 2A, 2B, 32, 33, 3A, 3B,
  3579. ; 84-87, 8A, 8B
  3580.  
  3581. OP_15AE:
  3582.         CALL    PARS_MOD_B_1836
  3583.         CALL    SUB_1551
  3584. LOC_15B4:
  3585.         MOV    AL,2CH            ; ','
  3586.         STOSB                ; Store al to es:[di]
  3587. LOC_15B7:
  3588.         JMP    LOC_18BA
  3589.  
  3590. ;==== External Entry into Subroutine ======================================
  3591. ; op-codes: EB
  3592.  
  3593. OP_15BA:
  3594.         INC    DATA_285C        ; (=0)
  3595.  
  3596. ;==== External Entry into Subroutine ======================================
  3597. ; op-codes: 70-7F E0-E3
  3598.  
  3599. OP_15BE:
  3600.         CALL    RD_NXT_BYT_1B1B
  3601.         CBW                ; Convrt byte to word
  3602.         MOV    DX,AX
  3603.         JMP    SHORT LOC_15E2
  3604.  
  3605. ;==== External Entry into Subroutine ======================================
  3606. ; op-codes: E9
  3607.  
  3608. OP_15C6:
  3609.         INC    DATA_285C        ; (=0)
  3610.         CALL    SUB_1B10
  3611.         PUSH    DX
  3612.         CALL    SUB_15E2
  3613.         POP    DX
  3614.         INC    DH
  3615.         JNZ    LOC_RET_15DE
  3616.         OR    DL,DL
  3617.         JNS    LOC_RET_15DE        ; Jump if not sign
  3618.         INC    DATA_285D        ; (=0)
  3619.  
  3620. LOC_RET_15DE:
  3621.         RETN
  3622.  
  3623. ;==== External Entry into Subroutine ======================================
  3624. ; op-codes: E8
  3625.  
  3626. OP_15DF:
  3627.         CALL    SUB_1B10
  3628.  
  3629. ;==== External Entry into Subroutine ======================================
  3630.  
  3631. SUB_15E2:
  3632. LOC_15E2:
  3633.         ADD    DX,DATA_2858        ; (=0)
  3634.         JMP    LOC_1447
  3635.  
  3636. ;==== External Entry into Subroutine ======================================
  3637. ; op-codes: 91-97
  3638.  
  3639. OP_15E9:
  3640.         CALL    OP_155E
  3641.         MOV    AL,2CH            ; ','
  3642.         STOSB                ; Store al to es:[di]
  3643.         MOV    AL,0
  3644.         JMP    LOC_155E
  3645.  
  3646. ;==== External Entry into Subroutine ======================================
  3647. ; op-codes: A2, A3
  3648.  
  3649. OP_15F4:
  3650.         CALL    SUB_141D
  3651.         MOV    AL,2CH            ; ','
  3652.         STOSB                ; Store al to es:[di]
  3653.  
  3654. ;==== External Entry into Subroutine ======================================
  3655.  
  3656. SUB_15FA:
  3657.         JMP    SHORT LOC_1649
  3658.     ;***    DB    90H
  3659.  
  3660. ;==== External Entry into Subroutine ======================================
  3661. ; op-codse: A4-A7, AA-AF
  3662.  
  3663. OP_15FD_STRINGS:
  3664.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  3665.         JZ    LOC_RET_165F
  3666.         MOV    DL,AL
  3667.         SUB    AL,0A4H
  3668.         SHR    AL,1            ; Shift w/zeros fill
  3669.         MOV    BX,OFFSET STR_2030    ; (72B5:2030=95H)
  3670.         CALL    SUB_185A
  3671.         DEC    BX
  3672.         JNZ    LOC_1616
  3673.         JMP    LOC_17D1
  3674. LOC_1616:
  3675.         CALL    SUB_1897
  3676.         CMP    DL,0A8H
  3677.         JA    LOC_1624
  3678.         MOV    SI,OFFSET DATA_2165    ; (72B5:2165=5BH)
  3679.         CALL    WRT_STRING_18A4
  3680. LOC_1624:
  3681.         CALL    SUB_181D
  3682.         MOV    SI,OFFSET DATA_2417    ; (72B5:2417=5BH)
  3683.         JMP    LOC_18A4
  3684.  
  3685. ;==== External Entry into Subroutine ======================================
  3686. ; op-codes: B0-B7
  3687.  
  3688. OP_162D:
  3689.         MOV    BYTE PTR OPCODE_BYT_286B,0    ; (72B5:286B=0)
  3690.         JMP    SHORT LOC_1639
  3691.  
  3692. ;==== External Entry into Subroutine ======================================
  3693. ; op-codes: B8-BF
  3694.  
  3695. OP_1634:
  3696.         MOV    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3697. LOC_1639:
  3698.         AND    AL,7            ; clear high 5-bits
  3699.         JMP    LOC_131F
  3700.  
  3701. ;==== External Entry into Subroutine ======================================
  3702. ; op-codes: CC
  3703.  
  3704. OP_163E:
  3705.         MOV    AL,3
  3706.         JMP    LOC_1332
  3707.  
  3708. ;==== External Entry into Subroutine ======================================
  3709. ; op-codes: E6, E7
  3710.  
  3711. OP_1643:
  3712.         CALL    OP_1654
  3713.         MOV    AL,2CH            ; ','
  3714.         STOSB                ; Store al to es:[di]
  3715.  
  3716. ;==== External Entry into Subroutine ======================================
  3717.  
  3718. SUB_1649:
  3719. LOC_1649:
  3720.         MOV    AL,0
  3721.         JMP    LOC_1554
  3722.  
  3723. ;==== External Entry into Subroutine ======================================
  3724. ; op-codes: E4, E5
  3725.  
  3726. OP_164E:
  3727.         CALL    SUB_1649
  3728.         MOV    AL,2CH            ; ','
  3729.         STOSB                ; Store al to es:[di]
  3730.  
  3731. ;==== External Entry into Subroutine ======================================
  3732. ; op-codes: CD
  3733. OP_1654:
  3734.         CALL    RD_NXT_BYT_1B1B
  3735.         CALL    SUB_1337
  3736.  
  3737. ;==== External Entry into Subroutine ======================================
  3738.  
  3739. SUB_165A:
  3740. LOC_165A:
  3741.         MOV    BYTE PTR DATA_287C,80H    ; (72B5:287C=48H)
  3742.  
  3743. LOC_RET_165F:
  3744.         RETN
  3745.  
  3746. ;==== External Entry into Subroutine ======================================
  3747. ; op-codes: D8
  3748.  
  3749. OP_1660:
  3750.         CALL    SUB_171A
  3751.         MOV    AX,5453H        ; 'ST'
  3752.         STOSW                ; Store ax to es:[di]
  3753.         MOV    AL,2CH            ; ','
  3754.         STOSB                ; Store al to es:[di]
  3755.  
  3756. ;==== External Entry into Subroutine ======================================
  3757.  
  3758. SUB_166A:
  3759. LOC_166A:
  3760.         MOV    AX,5453H        ; 'ST'
  3761.         STOSW                ; Store ax to es:[di]
  3762.         MOV    AX,3028H        ; '(0'
  3763.         OR    AH,RM_FIELD_2843    ; patch the '0', above
  3764.         STOSW                ; Store ax to es:[di]
  3765.         MOV    AL,29H            ; ')'
  3766.         STOSB                ; Store al to es:[di]
  3767.         RETN
  3768.  
  3769. ;==== External Entry into Subroutine ======================================
  3770. ; op-code: DC
  3771. OP_167A:
  3772.         CALL    SUB_171A
  3773.         CALL    SUB_166A
  3774.         JMP    LOC_1712
  3775.  
  3776. ;==== External Entry into Subroutine ======================================
  3777. ; op-codes: D9
  3778.  
  3779. OP_1683_ESC1:
  3780.         CALL    SUB_171A
  3781.         MOV    AL,MOD_REG_RM_286C    ; (72B5:286C=0)
  3782.         SUB    AL,0E0H
  3783.         JC    LOC_1697
  3784.         MOV    BX,OFFSET ESC_2054    ; (72B5:2054=0BBH)
  3785.         CALL    SUB_185A
  3786.         DEC    BX
  3787.         JZ    LOC_16AF
  3788.  
  3789. LOC_RET_1696:
  3790.         RETN
  3791. LOC_1697:
  3792.         MOV    BX,OFFSET ESC_204C    ; (72B5:204C=40H)
  3793.         MOV    AL,REG_FIELD_2845    ; (72B5:2845=0)
  3794.         CALL    SUB_185A
  3795.         MOV    AL,MOD_REG_RM_286C    ; (72B5:286C=0)
  3796.         SUB    AL,0D0H
  3797.         JC    LOC_166A
  3798.         JZ    LOC_RET_1696
  3799.         AND    AL,0FH            ; clear high 4-bits
  3800.         CMP    AL,8            ; test if bit-3 set
  3801.         JAE    LOC_166A        ; jump if 8 thru 15
  3802. LOC_16AF:
  3803.         JMP    LOC_17FE        ; jump, 0 thru 7
  3804.  
  3805. ;==== External Entry into Subroutine ======================================
  3806. ; op-codes: DA
  3807.  
  3808. OP_16B2:
  3809.         CALL    SUB_171A
  3810.         JMP    LOC_17FE
  3811.  
  3812. ;==== External Entry into Subroutine ======================================
  3813. ; op-codes: DB
  3814.  
  3815. OP_16B8_ESC3:
  3816.         CALL    SUB_171A
  3817.         MOV    BX,OFFSET ESC_20B4    ; (72B5:20B4=0F3H)
  3818.         MOV    AL,MOD_REG_RM_286C    ; (72B5:286C=0)
  3819.         SUB    AL,0E0H
  3820.         JC    LOC_172F
  3821.         CMP    AL,4
  3822.         JAE    LOC_172F
  3823.         JMP    LOC_185A
  3824.  
  3825. ;==== External Entry into Subroutine ======================================
  3826. ; op-codes: DD, DF
  3827.  
  3828. OP_16CC_ESC5_7:
  3829.         CALL    SUB_171A
  3830.         CMP    BYTE PTR REG_FIELD_2845,4    ; (72B5:2845=0)
  3831.         JAE    LOC_172F
  3832.         MOV    BX,OFFSET ESC_20CC    ; (72B5:20CC=0F7H)
  3833.         CALL    SUB_185A
  3834.         CMP    BYTE PTR OPCODE_BYT_286B,0DDH    ; (72B5:286B=0)
  3835.         JE    LOC_16EA
  3836.         TEST    BYTE PTR REG_FIELD_2845,0FFH    ; (72B5:2845=0)
  3837.         JZ    LOC_172F
  3838. LOC_16EA:
  3839.         JMP    LOC_166A
  3840.  
  3841. ;==== External Entry into Subroutine ======================================
  3842. ; op-codes: DE
  3843.  
  3844. OP_16ED_ESC6:
  3845.         CALL    SUB_171A
  3846.         MOV    BX,OFFSET ESC_20D4    ; (72B5:20D4=0ADH)
  3847.         MOV    AL,REG_FIELD_2845    ; (72B5:2845=0)
  3848.         CALL    SUB_185A
  3849.         CMP    BYTE PTR REG_FIELD_2845,3    ; (72B5:2845=0)
  3850.         JNE    LOC_1708
  3851.         CMP    BYTE PTR MOD_REG_RM_286C,0D9H    ; (72B5:286C=0)
  3852.         JNE    LOC_172F
  3853.         RETN
  3854. LOC_1708:
  3855.         CALL    SUB_166A
  3856.         CMP    BYTE PTR REG_FIELD_2845,2    ; (72B5:2845=0)
  3857.         JE    LOC_RET_1719
  3858. LOC_1712:
  3859.         MOV    AL,2CH            ; ','
  3860.         STOSB                ; Store al to es:[di]
  3861.         MOV    AX,5453H        ; 'ST'
  3862.         STOSW                ; Store ax to es:[di]
  3863.  
  3864. LOC_RET_1719:
  3865.         RETN
  3866.  
  3867. ;==== External Entry into Subroutine ======================================
  3868.  
  3869. SUB_171A:
  3870. ;**CHANGED**    TEST    BYTE PTR DATA_2874,0FFH    ; (=0FFH)
  3871.         TEST    BYTE PTR SW_F_8087_CODES,0FFH    ; (=0FFH)
  3872.         JNZ    LOC_1735
  3873.         CALL    SUB_1855
  3874.         CMP    BYTE PTR MOD_FIELD_2844,3    ; (72B5:2844=0)
  3875.         JE    LOC_RET_1719
  3876.         DEC    BX
  3877.         POP    AX
  3878.         JNZ    LOC_1732
  3879. LOC_172F:
  3880.         JMP    LOC_17FE
  3881. LOC_1732:
  3882.         JMP    LOC_18BA
  3883. LOC_1735:
  3884.         POP    CX
  3885.                         ; 9DH s/b MN_ESC-MN_AAA
  3886. ;**CHANGED**    MOV    OPW_TBL_WD_285F,9DH    ; (72B5:285F=0)
  3887.         MOV    OPW_TBL_WD_285F,MN_ESC-MN_AAA
  3888.         AND    AL,7            ; clear high 5-bits
  3889.         MOV    DL,AL
  3890.         CALL    PARS_MOD_B_1836
  3891.         MOV    CL,3
  3892.         SHL    DL,CL            ; Shift w/zeros fill
  3893.         OR    AL,DL
  3894.         CALL    SUB_1332
  3895.         MOV    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3896.         JMP    LOC_15B4
  3897.  
  3898. ;==== External Entry into Subroutine ======================================
  3899. ; op-codes: EC, ED
  3900.  
  3901. OP_1754:
  3902.         CALL    SUB_1649
  3903.         MOV    AL,2CH            ; ','
  3904.         STOSB                ; Store al to es:[di]
  3905.  
  3906. ;==== External Entry into Subroutine ======================================
  3907.  
  3908. SUB_175A:
  3909.         MOV    AX,5844H        ; 'DT'
  3910.         STOSW                ; Store ax to es:[di]
  3911.         RETN
  3912.  
  3913. ;==== External Entry into Subroutine ======================================
  3914. ; op-codes: EE, EF
  3915.  
  3916. OP_175F:
  3917.         CALL    SUB_175A
  3918.         MOV    AL,2CH            ; ','
  3919.         STOSB                ; Store al to es:[di]
  3920.         JMP    LOC_1649
  3921.  
  3922. ;==== External Entry into Subroutine ======================================
  3923. ; op-codes: D0-D3
  3924.  
  3925. OP_1768:
  3926.         CALL    SUB_1865
  3927.         CALL    SUB_18B0
  3928.         MOV    AL,2CH            ; ','
  3929.         STOSB                ; Store al to es:[di]
  3930.         TEST    BYTE PTR OPCODE_BYT_286B,2    ; (72B5:286B=0)
  3931.         JZ    LOC_177D
  3932.         MOV    AX,4C43H        ; 'CL'
  3933.         STOSW                ; Store ax to es:[di]
  3934.         RETN
  3935. LOC_177D:
  3936.         MOV    AL,31H            ; '1'
  3937.         STOSB                ; Store al to es:[di]
  3938.         RETN
  3939.  
  3940. ;==== External Entry into Subroutine ======================================
  3941. ; op-codes: F6, F7
  3942.  
  3943. OP_1781:
  3944.         CALL    SUB_1865
  3945.         OR    AL,AL
  3946.         JNZ    LOC_179D
  3947.         JMP    LOC_12BB
  3948.  
  3949. ;==== External Entry into Subroutine ======================================
  3950. ; op-codes: FE, FF
  3951.  
  3952. OP_178B:
  3953.         CALL    SUB_1865
  3954.         CMP    BYTE PTR OPW_HI_NBL_286A,50H    ; (72B5:286A=0) 'P'
  3955.         JNE    LOC_1799
  3956.         INC    DATA_285C        ; (=0)
  3957. LOC_1799:
  3958.         CMP    AL,2
  3959.         JAE    LOC_17A0
  3960. LOC_179D:
  3961.         JMP    LOC_18B0
  3962. LOC_17A0:
  3963.         TEST    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  3964.         JZ    LOC_17FE
  3965.         CMP    AL,2
  3966.         JE    LOC_179D
  3967.         CMP    AL,4
  3968.         JE    LOC_179D
  3969.         JMP    LOC_18BA
  3970.  
  3971. ;==== External Entry into Subroutine ======================================
  3972. ; op-codes: C3
  3973.  
  3974. OP_17B2:
  3975.         MOV    BX,OFFSET MAC_RET_NEAR    ; (72B5:2568=0)
  3976.         JMP    SHORT LOC_17C0
  3977.  
  3978. ;==== External Entry into Subroutine ======================================
  3979. ; op-codes: CF
  3980. OP_17B7:
  3981.         INC    DATA_285C        ; (=0)
  3982.         JMP    SHORT LOC_17CA
  3983.  
  3984. ;==== External Entry into Subroutine ======================================
  3985. ; op-codes: CB
  3986.  
  3987. OP_17BD:
  3988.         MOV    BX,OFFSET MAC_RET_FAR    ; (72B5:2518=0)
  3989. LOC_17C0:
  3990.         MOV    BYTE PTR [BX],1
  3991.         INC    DATA_285C        ; (=0)
  3992.  
  3993. ;==== External Entry into Subroutine ======================================
  3994. ; op-codes: D7
  3995.  
  3996. OP_17C7:
  3997.         CALL    SUB_181D
  3998.  
  3999. ;==== External Entry into Subroutine ======================================
  4000. ; op-codes: 27, 2F, 37, 3F, 90, 98, 99, 9B-9F, CE, F4, F5, F8-FD
  4001.  
  4002. OP_17CA:
  4003. LOC_17CA:
  4004.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  4005.         JZ    LOC_RET_1835
  4006.  
  4007. ;==== External Entry into Subroutine ======================================
  4008. ; op-codes: 0F, 60-6F, C0, C1, C8, C9, D6, F1
  4009.  
  4010. OP_17D1:
  4011. LOC_17D1:
  4012.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  4013.         JZ    LOC_180A
  4014.         MOV    AL,DATA_2866        ; (=0)
  4015.         CALL    SUB_1332
  4016.         MOV    AL,2CH            ; ','
  4017.         STOSB                ; Store al to es:[di]
  4018.         MOV    AL,OPCODE_BYT_286B    ; (72B5:286B=0)
  4019.         JMP    SHORT LOC_180A
  4020.  
  4021. ;==== External Entry into Subroutine ======================================
  4022.  
  4023. SUB_17E6:
  4024.         CALL    SUB_1865
  4025.         CMP    BYTE PTR OPCODE_BYT_286B,82H    ; (72B5:286B=0)
  4026.         JB    LOC_RET_17FC
  4027.         CMP    AL,1
  4028.         JE    LOC_17FD
  4029.         CMP    AL,4
  4030.         JE    LOC_17FD
  4031.         CMP    AL,6
  4032.         JE    LOC_17FD
  4033.  
  4034. LOC_RET_17FC:
  4035.         RETN
  4036. LOC_17FD:
  4037.         POP    BX
  4038. LOC_17FE:
  4039.         MOV    AL,OPCODE_BYT_286B    ; (72B5:286B=0)
  4040.         CALL    SUB_1332
  4041.         MOV    AL,2CH            ; ','
  4042.         STOSB                ; Store al to es:[di]
  4043.         MOV    AL,MOD_REG_RM_286C    ; (72B5:286C=0)
  4044.  
  4045. LOC_180A:                    ; 6AH s/b MN_DB-MN_AAA
  4046. ;**CHANGED**    MOV    OPW_TBL_WD_285F,6AH    ; (72B5:285F=0)
  4047.         MOV    OPW_TBL_WD_285F,MN_DB-MN_AAA
  4048. LOC_1810:
  4049.         CALL    SUB_1332
  4050.         MOV    AL,9            ; TAB
  4051.         STOSB                ; Store al to es:[di]
  4052.         MOV    AX,3F3FH        ; '??'
  4053.         STOSW                ; Store ax to es:[di]
  4054.         JMP    LOC_165A
  4055.  
  4056. ;==== External Entry into Subroutine ======================================
  4057.  
  4058. SUB_181D:
  4059.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  4060.         JZ    LOC_RET_1835
  4061.         PUSH    AX
  4062.         MOV    AL,DATA_2866        ; (=0)
  4063.         CALL    OP_156A
  4064.         MOV    AL,3AH            ; ':'
  4065.         STOSB                ; Store al to es:[di]
  4066.         MOV    BYTE PTR DATA_2866,0    ; (=0)
  4067.         POP    AX
  4068.         STC                ; Set carry flag
  4069.  
  4070. LOC_RET_1835:
  4071.         RETN
  4072.  
  4073. ;==== External Entry into Subroutine ======================================
  4074. ;
  4075. ;         Parse    MOD-REG-R/M byte
  4076.  
  4077. PARS_MOD_B_1836:
  4078.         CALL    RD_NXT_BYT_1B1B
  4079.         MOV    MOD_REG_RM_286C,AL    ; (72B5:286C=0)
  4080.         MOV    AH,AL
  4081.         AND    AL,7            ; clear high 5-bits
  4082.         MOV    RM_FIELD_2843,AL    ; (72B5:2843=0)
  4083.         MOV    CL,3
  4084.         SHR    AH,CL            ; Shift w/zeros fill
  4085.         MOV    AL,AH
  4086.         AND    AL,7            ; clear high 5-bits
  4087.         MOV    REG_FIELD_2845,AL    ; (72B5:2845=0)
  4088.         SHR    AH,CL            ; Shift w/zeros fill
  4089.         MOV    MOD_FIELD_2844,AH    ; (72B5:2844=0)
  4090.         RETN
  4091.  
  4092. ;==== External Entry into Subroutine ======================================
  4093.  
  4094. SUB_1855:
  4095.         CALL    PARS_MOD_B_1836
  4096.         MOV    DL,AL
  4097.  
  4098. ;==== External Entry into Subroutine ======================================
  4099.  
  4100. SUB_185A:
  4101. LOC_185A:
  4102.         MOV    AH,0
  4103.         ADD    BX,AX
  4104.         ADD    BX,AX
  4105.         XOR    AX,AX
  4106.         DEC    BX
  4107.         JMP    SHORT LOC_1873
  4108.  
  4109. ;==== External Entry into Subroutine ======================================
  4110.  
  4111. SUB_1865:
  4112.         CALL    PARS_MOD_B_1836
  4113.         MOV    DL,AL
  4114.         CBW                ; Convrt byte to word
  4115.         ADD    BX,AX
  4116.         ADD    BX,AX
  4117.         ADD    BX,AX
  4118.         MOV    AL,[BX]
  4119. LOC_1873:
  4120.         TEST    BYTE PTR DATA_2866,0FFH    ; (=0)
  4121.         JNZ    LOC_187D
  4122.         MOV    OPJ_HI_BYT_2869,AL    ; (72B5:2869=0)
  4123. LOC_187D:
  4124.         MOV    AX,[BX+1]
  4125.         MOV    OPW_TBL_WD_285F,AX    ; (72B5:285F=0)
  4126.         MOV    BX,AX
  4127.         MOV    OPW_HI_NBL_286A,AH    ; (72B5:286A=0)
  4128.         AND    BYTE PTR OPW_HI_NBL_286A,0F0H    ; clear low 4-bits
  4129.         OR    AX,AX
  4130.         MOV    AL,DL
  4131.         JNZ    LOC_RET_18AF
  4132.         JMP    LOC_17FD
  4133.  
  4134. ;==== External Entry into Subroutine ======================================
  4135. ;
  4136. ;         Output string    - 'BYTE PTR' or 'WORD PTR'
  4137.  
  4138. SUB_1897:
  4139.         MOV    SI,OFFSET MN_BYT_PT    ; (72B5:2109=42H)
  4140.         TEST    BYTE PTR OPCODE_BYT_286B,1    ; (72B5:286B=0)
  4141.         JZ    LOC_18A4
  4142.         MOV    SI,OFFSET MN_WORD_PT    ; (72B5:243F=57H)
  4143.  
  4144. ;==== External Entry into Subroutine ======================================
  4145. ;
  4146. ;         Output string    - ends with bit-7=1
  4147.  
  4148. WRT_STRING_18A4:
  4149. LOC_18A4:
  4150.         LODSB                ; String [si] to al
  4151.         MOV    AH,AL
  4152.         AND    AL,7FH            ; clear bit-7
  4153.         STOSB                ; Store al to es:[di]
  4154.         AND    AH,80H            ; clear all but bit-7
  4155.         JZ    LOC_18A4        ; jump if not end of string
  4156.  
  4157. LOC_RET_18AF:
  4158.         RETN
  4159.  
  4160. ;==== External Entry into Subroutine ======================================
  4161.  
  4162. SUB_18B0:
  4163. LOC_18B0:
  4164.         CMP    BYTE PTR MOD_FIELD_2844,3    ; (72B5:2844=0)
  4165.         JE    LOC_18BA
  4166.         CALL    SUB_1897
  4167. OP_1575        ENDP
  4168.  
  4169.  
  4170. ;==========================================================================
  4171. ;                   SUBROUTINE
  4172. ;==========================================================================
  4173.  
  4174. SUB_18BA    PROC    NEAR
  4175. LOC_18BA:
  4176.         MOV    AX,WORD PTR RM_FIELD_2843    ; (72B5:2843=0)
  4177.         CMP    AH,3
  4178.         JNE    LOC_18C5
  4179.         JMP    LOC_1554
  4180. LOC_18C5:
  4181.         MOV    DX,AX
  4182.         CMP    AX,6
  4183.         JNE    LOC_18CF
  4184.         JMP    LOC_141D
  4185. LOC_18CF:
  4186.         MOV    BL,AL
  4187.         MOV    BH,0
  4188.         SHL    BX,1            ; Shift w/zeros fill
  4189.         CMP    BYTE PTR DATA_24C3[BX],50H    ; (72B5:24C3=42H) 'P'
  4190.         JNE    LOC_18E1
  4191.         MOV    BYTE PTR OPJ_HI_BYT_2869,10H    ; (72B5:2869=0)
  4192. LOC_18E1:
  4193.         CALL    SUB_181D
  4194.         MOV    AL,5BH            ; '['
  4195.         STOSB                ; Store al to es:[di]
  4196.         MOV    AX,WORD PTR DATA_24C3[BX]    ; (72B5:24C3=5842H)
  4197.         STOSW                ; Store ax to es:[di]
  4198.         CMP    DL,4
  4199.         JAE    LOC_18FC
  4200.         MOV    AL,2BH            ; '+'
  4201.         STOSB                ; Store al to es:[di]
  4202.         AND    BL,2            ; clear all but bit-1
  4203.         MOV    AX,WORD PTR DATA_24CB[BX] ; 2-words indexed SI,DI
  4204.         STOSW                ; Store ax to es:[di]
  4205. LOC_18FC:
  4206.         OR    DH,DH
  4207.         JZ    LOC_1924
  4208.         DEC    DH
  4209.         JZ    LOC_190C
  4210.         MOV    AL,2BH            ; '+'
  4211.         STOSB                ; Store al to es:[di]
  4212.         CALL    SUB_141D
  4213.         JMP    SHORT LOC_1924
  4214. LOC_190C:
  4215.         CALL    RD_NXT_BYT_1B1B
  4216.         CBW                ; Convrt byte to word
  4217.         MOV    DX,AX
  4218.         MOV    AH,AL
  4219.         MOV    AL,2BH            ; '+'
  4220.         OR    AH,AH
  4221.         JNS    LOC_191E
  4222.         MOV    AL,2DH            ; '-'
  4223.         NEG    AH
  4224. LOC_191E:
  4225.         STOSB                ; Store al to es:[di]
  4226.         MOV    AL,AH
  4227.         CALL    SUB_1332
  4228. LOC_1924:
  4229.         MOV    AL,5DH            ; ']'
  4230.         STOSB                ; Store al to es:[di]
  4231.         JMP    LOC_165A
  4232. SUB_18BA    ENDP
  4233.  
  4234.  
  4235. ;==========================================================================
  4236. ;                   SUBROUTINE
  4237. ;==========================================================================
  4238.  
  4239. SUB_192A    PROC    NEAR
  4240.  
  4241.                         ; D20AH is opcode OR DL,DL
  4242. ;**CHANGED**    MOV    WORD PTR DS:ALTR_OPW_1965+0,0D20AH    ; (72B5:1965=0CAFEH)
  4243.         MOV    BYTE PTR OLD_DEC_1965,0    ;for OR DL,DL (no decrement)
  4244.         JMP    SHORT LOC_1938
  4245.  
  4246. ;==== External Entry into Subroutine ======================================
  4247.  
  4248. SUB_1932:
  4249.  
  4250.                         ; CAFEH is opcode DEC DL
  4251. ;**CHANGED**    MOV    WORD PTR DS:ALTR_OPW_1965+0,0CAFEH    ; (72B5:1965=0CAFEH)
  4252.         MOV    BYTE PTR OLD_DEC_1965,1    ;for DEC DL
  4253.  
  4254. LOC_1938:
  4255.         TEST    BYTE PTR DATA_2856,0FFH    ; (=0)
  4256.         JNZ    LOC_1970
  4257.         CALL    SUB_132F
  4258.         MOV    AX,DATA_2919        ; (=0) (store AL only)
  4259.         MOV    BYTE PTR DATA_2919+1,0    ; (=0) (zero AH value)
  4260.         OR    AH,AH
  4261.         JNZ    LOC_1950
  4262.         DEC    AH
  4263. LOC_1950:
  4264.         AND    DL,AH
  4265. LOC_1952:
  4266.         SHR    AH,1            ; Shift w/zeros fill
  4267.         JC    LOC_195A
  4268.         SHR    DL,1            ; Shift w/zeros fill
  4269.         JMP    SHORT LOC_1952
  4270. LOC_195A:
  4271.         OR    DL,DL
  4272.         JNZ    ALTR_OPW_1965
  4273.  
  4274. LOC_195E:                    ; 6AH s/b MN_DB-MN_AAA
  4275. ;**CHANGED**    MOV    OPW_TBL_WD_285F,6AH    ; (72B5:285F=0)
  4276.         MOV    OPW_TBL_WD_285F,MN_DB-MN_AAA
  4277.         RETN
  4278.  
  4279. ALTR_OPW_1965:                    ; Altered op-code - 'DEC DL' or
  4280.                         ;  'OR DL,DL'
  4281. ;**CHANGED**    DEC    DL
  4282.         SUB    DL,OLD_DEC_1965        ;conditional decrement, test 0
  4283.  
  4284.         MOV    DATA_2856,DL        ; (=0)
  4285.         JZ    LOC_195E
  4286.         MOV    AL,2CH            ; ','
  4287.         STOSB                ; Store al to es:[di]
  4288. SUB_192A    ENDP
  4289.  
  4290.  
  4291. ;==========================================================================
  4292. ;                   SUBROUTINE
  4293. ;==========================================================================
  4294.  
  4295. SUB_1970    PROC    NEAR
  4296. LOC_1970:
  4297.         XOR    CX,CX
  4298.  
  4299.                         ; 6AH s/b MN_DB-MN_AAA
  4300. ;**CHANGED**    MOV    OPW_TBL_WD_285F,6AH    ; (72B5:285F=0)
  4301.         MOV    OPW_TBL_WD_285F,MN_DB-MN_AAA
  4302. LOC_1978:
  4303.         CALL    RD_NXT_BYT_1B1B
  4304.         MOV    DL,AL
  4305.         TEST    BYTE PTR DATA_2846,0FFH    ; (=0)
  4306.         PUSHF
  4307.         CMP    AL,2CH            ; ','
  4308.         JE    LOC_19AD
  4309.         CMP    AL,27H            ; '''
  4310.         JE    LOC_19AD
  4311.         CMP    AL,22H            ; '"'
  4312.         JE    LOC_19AD
  4313.         CALL    SUB_1A7D
  4314.         JNC    LOC_19AD
  4315.         POPF
  4316.         JNZ    LOC_199D
  4317.         MOV    AL,27H            ; '''
  4318.         STOSB                ; Store al to es:[di]
  4319.         MOV    DATA_2846,AL        ; (=0)
  4320. LOC_199D:
  4321.         MOV    AL,DL
  4322.         STOSB                ; Store al to es:[di]
  4323.         INC    CX
  4324.         CMP    AL,24H            ; '$'
  4325.         JNE    LOC_19E5
  4326. LOC_19A5:
  4327.         CALL    SUB_19F1
  4328.         JC    LOC_RET_19ED
  4329.         JMP    LOC_1A68
  4330. LOC_19AD:
  4331.         POPF
  4332.         JZ    LOC_19B9
  4333.         MOV    AX,2C27H        ; "'," single quote, comma
  4334.         STOSW                ; Store ax to es:[di]
  4335.         MOV    BYTE PTR DATA_2846,0    ; (=0)
  4336. LOC_19B9:
  4337.         CMP    DL,0DH            ; CR
  4338.         JNE    LOC_19C3
  4339.         MOV    AX,5243H        ; 'CR'
  4340.         JMP    SHORT LOC_19CB
  4341. LOC_19C3:
  4342.         CMP    DL,0AH            ; LF
  4343.         JNE    LOC_19CE
  4344.         MOV    AX,464CH        ; 'LF'
  4345. LOC_19CB:
  4346.         STOSW                ; Store ax to es:[di]
  4347.         JMP    SHORT LOC_19D5
  4348. LOC_19CE:
  4349.         MOV    AL,DL
  4350.         PUSH    CX
  4351.         CALL    SUB_1332
  4352.         POP    CX
  4353. LOC_19D5:
  4354.         MOV    AL,2CH            ; ','
  4355.         STOSB                ; Store al to es:[di]
  4356.         CMP    DL,0AH
  4357.         JE    LOC_19A5
  4358.         TEST    DL,80H
  4359.         JNZ    LOC_19A5
  4360.         ADD    CX,4
  4361. LOC_19E5:
  4362.         CMP    CX,35H            ; 53 decimal
  4363.         CALL    SUB_19F1
  4364.         JNC    LOC_1978
  4365.  
  4366. LOC_RET_19ED:
  4367.         RETN
  4368.  
  4369. ;==== External Entry into Subroutine ======================================
  4370.  
  4371. SUB_19EE:
  4372.         CMP    CX,16H            ; 22 decimal
  4373.  
  4374. ;==== External Entry into Subroutine ======================================
  4375.  
  4376. SUB_19F1:
  4377.         PUSH    BX
  4378.         PUSHF
  4379.         TEST    BYTE PTR DATA_2856,0FFH    ; (=0)
  4380.         JZ    LOC_1A0D
  4381.         DEC    DATA_2856        ; (=0)
  4382.         JNZ    LOC_1A1A
  4383.         TEST    BYTE PTR DATA_291B,0FFH    ; (=0)
  4384.         JZ    LOC_1A5D
  4385.         DEC    DATA_2919        ; (=0)
  4386.         JMP    SHORT LOC_1A5D
  4387. LOC_1A0D:
  4388.         TEST    BYTE PTR DATA_291B,0FFH    ; (=0)
  4389.         JZ    LOC_1A1A
  4390.         DEC    DATA_2919        ; (=0)
  4391.         JZ    LOC_1A5D
  4392. LOC_1A1A:
  4393.         TEST    DATA_284D,0FFFFH    ; (72B5:284D=0)
  4394.         JZ    LOC_1A5D
  4395.         MOV    AX,DATA_2889        ; (=0)
  4396.         CMP    AX,DATA_288F        ; (=0)
  4397.         MOV    AX,DATA_2858        ; (=0)
  4398.         JNC    LOC_1A34
  4399.         CMP    DATA_2885,AX        ; (=0)
  4400.         JBE    LOC_1A5D
  4401. LOC_1A34:
  4402.         CMP    BYTE PTR DATA_2861,1    ; (=0)
  4403.         JE    LOC_1A47
  4404.         TEST    BYTE PTR DATA_2888,0FFH    ; (=0)
  4405.         JZ    LOC_1A47
  4406.         CMP    AX,[BP+1]
  4407.         JAE    LOC_1A5D
  4408. LOC_1A47:
  4409.         MOV    BX,DATA_288D        ; (=0)
  4410.         CMP    BX,DATA_2893        ; (=0)
  4411.         JAE    LOC_1A55
  4412.         CMP    AX,[BX]
  4413.         JAE    LOC_1A5D
  4414. LOC_1A55:
  4415.         POPF
  4416.         JNC    LOC_1A5E
  4417.         CLC                ; Clear carry flag
  4418.         POP    BX
  4419.         RETN
  4420. CALL_INDR_1A5B    DW    0            ; Indirect CALL offset
  4421. LOC_1A5D:
  4422.         POPF
  4423. LOC_1A5E:
  4424.         POP    BX
  4425.         POP    CALL_INDR_1A5B        ; (72B5:1A5B=0)
  4426.         STC                ; Set carry flag
  4427.         CALL    CALL_INDR_1A5B        ; (72B5:1A5B=0)
  4428. LOC_1A68:
  4429.         CMP    BYTE PTR [DI-1],2CH    ; ','
  4430.         JNE    LOC_1A72
  4431.         DEC    DI
  4432.         MOV    BYTE PTR [DI],0
  4433. LOC_1A72:
  4434.         TEST    BYTE PTR DATA_2846,0FFH    ; (=0)
  4435.         JZ    LOC_RET_1A7C
  4436.         MOV    AL,27H            ; '''
  4437.         STOSB                ; Store al to es:[di]
  4438.  
  4439. LOC_RET_1A7C:
  4440.         RETN
  4441. SUB_1970    ENDP
  4442.  
  4443.  
  4444. ;==========================================================================
  4445. ;                   SUBROUTINE
  4446. ;==========================================================================
  4447.  
  4448. SUB_1A7D    PROC    NEAR
  4449.         CMP    AL,20H            ; ' '
  4450.         CMC                ; Complement carry
  4451.         JNC    LOC_RET_1A84
  4452.         CMP    AL,7BH            ; '{'
  4453.  
  4454. LOC_RET_1A84:
  4455.         RETN
  4456. SUB_1A7D    ENDP
  4457.  
  4458.  
  4459. ;==========================================================================
  4460. ;                   SUBROUTINE
  4461. ;==========================================================================
  4462.  
  4463. SUB_1A85    PROC    NEAR
  4464.  
  4465.                         ; 7EH s/b MN_DW-MN_AAA
  4466. ;**CHANGED**    MOV    AX,7EH
  4467.         MOV    AX,MN_DW-MN_AAA
  4468.         CMP    BYTE PTR DATA_2887,1    ; (=0)
  4469.         JNE    LOC_1A92
  4470.  
  4471.                         ; 6AH s/b MN_DB-MN_AAA
  4472. ;**CHANGED**    MOV    AX,6AH
  4473.         MOV    AX,MN_DB-MN_AAA
  4474. LOC_1A92:
  4475.         MOV    OPW_TBL_WD_285F,AX    ; (72B5:285F=0)
  4476.         XOR    BX,BX
  4477.         MOV    CX,BX
  4478.         CALL    SUB_1AFC
  4479. LOC_1A9C:
  4480. ;**CHANGED**    MOV    DS:ALTR_W_1AC9+1,AX    ; (72B5:1ACA=0)
  4481.         MOV    DS:OLD_W_1ACA,AX    ; (72B5:1ACA=0)
  4482.         CALL    SUB_19EE
  4483.         JC    LOC_1AC5
  4484. LOC_1AA4:
  4485.         CALL    SUB_1AFC
  4486. ;**CHANGED**    CMP    AX,DS:ALTR_W_1AC9+1    ; (72B5:1ACA=0)
  4487.         CMP    AX,DS:OLD_W_1ACA    ; (72B5:1ACA=0)
  4488.         JNE    LOC_1AB5
  4489.         INC    BX
  4490.         CALL    SUB_19EE
  4491.         JC    LOC_1AE0
  4492.         JMP    SHORT LOC_1AA4
  4493. LOC_1AB5:
  4494.         PUSH    AX
  4495.         OR    BX,BX
  4496.         JZ    LOC_1ABF
  4497.         CALL    SUB_1AE0
  4498.         JMP    SHORT LOC_1AC2
  4499. LOC_1ABF:
  4500.         CALL    SUB_1AC5
  4501. LOC_1AC2:
  4502.         POP    AX
  4503.         JMP    SHORT LOC_1A9C
  4504.  
  4505. ;==== External Entry into Subroutine ======================================
  4506.  
  4507. SUB_1AC5:
  4508. LOC_1AC5:
  4509.         ADD    CX,6
  4510.         PUSH    CX
  4511.  
  4512. ALTR_W_1AC9:                    ; Altered code
  4513. ;**CHANGED**    MOV    DX,0
  4514.         MOV    DX,OLD_W_1ACA
  4515.         CMP    BYTE PTR DATA_2887,1    ; (=0)
  4516.         JNE    LOC_1AD8
  4517.         CALL    SUB_1342
  4518.         JMP    SHORT LOC_1ADB
  4519. LOC_1AD8:
  4520.         CALL    SUB_1447
  4521. LOC_1ADB:
  4522.         MOV    AL,2CH            ; ','
  4523.         STOSB                ; Store al to es:[di]
  4524.         POP    CX
  4525.         RETN
  4526. SUB_1A85    ENDP
  4527.  
  4528.  
  4529. ;==========================================================================
  4530. ;                   SUBROUTINE
  4531. ;==========================================================================
  4532.  
  4533. SUB_1AE0    PROC    NEAR
  4534. LOC_1AE0:
  4535.         ADD    CX,0AH
  4536.         PUSH    CX
  4537.         INC    BX
  4538.         XCHG    DX,BX
  4539.         CALL    SUB_1345
  4540.         MOV    SI,OFFSET DATA_216D_DUP    ; (72B5:216D=20H)
  4541.         CALL    WRT_STRING_18A4
  4542.         POP    CX
  4543.         CALL    SUB_1AC5
  4544.         DEC    DI
  4545.         MOV    AX,2C29H        ; '),' close paren, comma
  4546.         STOSW                ; Store ax to es:[di]
  4547.         XOR    BX,BX
  4548.         RETN
  4549. SUB_1AE0    ENDP
  4550.  
  4551.  
  4552. ;==========================================================================
  4553. ;                   SUBROUTINE
  4554. ;==========================================================================
  4555.  
  4556. SUB_1AFC    PROC    NEAR
  4557.         CALL    RD_NXT_BYT_1B1B
  4558.         MOV    AH,AL
  4559.         MOV    AL,0
  4560.         CMP    BYTE PTR DATA_2887,1    ; (=0)
  4561.         JE    LOC_1B0D
  4562.         CALL    RD_NXT_BYT_1B1B
  4563. LOC_1B0D:
  4564.         XCHG    AH,AL
  4565.         RETN
  4566. SUB_1AFC    ENDP
  4567.  
  4568.  
  4569. ;==========================================================================
  4570. ;                   SUBROUTINE
  4571. ;==========================================================================
  4572.  
  4573. SUB_1B10    PROC    NEAR
  4574.         CALL    RD_NXT_BYT_1B1B
  4575.         MOV    DL,AL
  4576.         CALL    RD_NXT_BYT_1B1B
  4577.         MOV    DH,AL
  4578.         RETN
  4579. SUB_1B10    ENDP
  4580.  
  4581.  
  4582. ;==========================================================================
  4583. ;         Read next byte from input file
  4584. ;==========================================================================
  4585.  
  4586. RD_NXT_BYT_1B1B    PROC    NEAR
  4587.         PUSH    SI
  4588.         MOV    AL,0
  4589.         TEST    DATA_284D,0FFFFH    ; (72B5:284D=0)
  4590.         JZ    LOC_1B57
  4591.         MOV    SI,DATA_287F        ; (=0)
  4592.         CMP    SI,OFFSET DTA4_2C9E    ; (72B5:2C9E=0)
  4593.         JB    LOC_1B4E
  4594.         PUSH    AX
  4595.         PUSH    DX
  4596.         MOV    DX,OFFSET DTA3_2A9E    ; 
  4597.         MOV    AH,1AH
  4598.         INT    21H            ; DOS Services  ah=function 1Ah
  4599.                         ;  set DTA to ds:dx
  4600.         XCHG    DX,SI
  4601.         MOV    DX,OFFSET FCB3_2A0F    ; (72B5:2A0F=61H)
  4602.         MOV    AH,14H
  4603.         INT    21H            ; DOS Services  ah=function 14h
  4604.                         ;  sequentl file read FCB @ds:dx
  4605.         CMP    AL,1
  4606.         JNE    LOC_1B4C
  4607.         MOV    DATA_284D,0        ; (72B5:284D=0)
  4608. LOC_1B4C:
  4609.         POP    DX
  4610.         POP    AX
  4611. LOC_1B4E:
  4612.         LODSB                ; String [si] to al
  4613.         MOV    DATA_287F,SI        ; (=0)
  4614.         DEC    DATA_284D        ; (72B5:284D=0)
  4615. LOC_1B57:
  4616.         INC    DATA_2854        ; (=0)
  4617.         INC    DATA_2858        ; (=0)
  4618.         MOV    SI,DATA_2854        ; (=0)
  4619.         CMP    SI,18H
  4620.         JA    LOC_1B6E
  4621.         ADD    SI,OFFSET DATA_282A    ; (=0)
  4622.         MOV    [SI],AL
  4623. LOC_1B6E:
  4624.         POP    SI
  4625.         RETN
  4626. RD_NXT_BYT_1B1B    ENDP
  4627.  
  4628.  
  4629. ;==========================================================================
  4630. ;                   SUBROUTINE
  4631. ;==========================================================================
  4632.  
  4633. SUB_1B70    PROC    NEAR
  4634.         MOV    SI,DATA_2E9E_E        ; (=0)
  4635. LOC_1B73:
  4636.         CMP    SI,DATA_288F        ; (=0)
  4637.         JA    LOC_1B95
  4638.         CMP    DX,[SI]
  4639.         PUSHF
  4640.         LODSW                ; String [si] to ax
  4641.         LODSB                ; String [si] to al
  4642.         LODSB                ; String [si] to al
  4643.         AND    AL,7FH            ; clear bit-7
  4644.         MOV    AH,0
  4645.         ADD    SI,AX
  4646.         POPF
  4647.         JC    LOC_1B95
  4648.         JNZ    LOC_1B73
  4649.         OR    AX,AX
  4650.         JZ    LOC_1B73
  4651.         SUB    SI,AX
  4652.         CMP    BYTE PTR [SI],0AEH
  4653.         CLC                ; Clear carry flag
  4654.         RETN
  4655. LOC_1B95:
  4656.         STC                ; Set carry flag
  4657.         RETN
  4658. SUB_1B70    ENDP
  4659.  
  4660. ;==========================================================================
  4661.         DB    10,'Table '
  4662. DATA_1BA9    DW    OFFSET SUB_1277        ; Data table (indexed access)
  4663.         DW    OFFSET SUB_1A85
  4664.         DW    OFFSET SUB_1A85
  4665.         DW    OFFSET SUB_1970
  4666.         DW    OFFSET SUB_1932
  4667.         DW    OFFSET SUB_192A
  4668.         DW    OFFSET SUB_1277
  4669.         DW    OFFSET SUB_1277
  4670.         DW    OFFSET SUB_1277
  4671.         DB    5 DUP (0)        ;(apparent padding)
  4672.  
  4673.         DB    10,'Op-code Dispatch, 2-words/entry, all 12-bit differences plus high 4-bits'
  4674.         DB    10,'1st word difference from "Mnemonic", 2nd word difference from "Op-codes"'
  4675.         DB    10,'except, use labels for 1st word of op-codes: 80-83,D0-D3,D8-DF,F6,F7,FE,FF',10
  4676.  
  4677. OPW_00_ADD    DW    MN_ADD-MN_AAA+04000H    ;00 ADD
  4678. OPJ_00        DW    OP_1548-OP_1250        ;
  4679. OPW_01_ADD    DW    MN_ADD-MN_AAA+04000H    ;01 ADD
  4680. OPJ_01        DW    OP_1548-OP_1250        ;
  4681. OPW_02_ADD    DW    MN_ADD-MN_AAA+01000H    ;02 ADD
  4682. OPJ_02        DW    OP_15AE-OP_1250        ;
  4683. OPW_03_ADD    DW    MN_ADD-MN_AAA+01000H    ;03 ADD
  4684. OPJ_03        DW    OP_15AE-OP_1250        ;
  4685. OPW_04_ADD    DW    MN_ADD-MN_AAA        ;04 ADD
  4686. OPJ_04        DW    OP_131D-OP_1250        ;
  4687. OPW_05_ADD    DW    MN_ADD-MN_AAA        ;05 ADD
  4688. OPJ_05        DW    OP_131D-OP_1250        ;
  4689. OPW_06_PUSH_ES    DW    MN_PUSH-MN_AAA        ;06 PUSH ES
  4690. OPJ_06        DW    OP_156A-OP_1250        ;
  4691. OPW_07_POP_ES    DW    MN_POP-MN_AAA        ;07 POP ES
  4692. OPJ_07        DW    OP_156A-OP_1250        ;
  4693. OPW_08_OR    DW    MN_OR-MN_AAA+04000H    ;08 OR
  4694. OPJ_08        DW    OP_1548-OP_1250        ;
  4695. OPW_09_OR    DW    MN_OR-MN_AAA+04000H    ;09 OR
  4696. OPJ_09        DW    OP_1548-OP_1250        ;
  4697. OPW_0A_OR    DW    MN_OR-MN_AAA+01000H    ;0A OR
  4698. OPJ_0A        DW    OP_15AE-OP_1250        ;
  4699. OPW_0B_OR    DW    MN_OR-MN_AAA+01000H    ;0B OR
  4700. OPJ_0B        DW    OP_15AE-OP_1250        ;
  4701. OPW_0C_OR    DW    MN_OR-MN_AAA        ;0C OR
  4702. OPJ_0C        DW    OP_131D-OP_1250        ;
  4703. OPW_0D_OR    DW    MN_OR-MN_AAA        ;0D OR
  4704. OPJ_0D        DW    OP_131D-OP_1250        ;
  4705. OPW_0E_PUSH_CS    DW    MN_PUSH-MN_AAA        ;0E PUSH CS
  4706. OPJ_0E        DW    OP_156A-OP_1250        ;
  4707. OPW_0F_???    DW    0000H            ;0F ???
  4708. OPJ_0F        DW    OP_17D1-OP_1250        ;
  4709. OPW_10_ADC    DW    MN_ADC-MN_AAA+04000H    ;10 ADC
  4710. OPJ_10        DW    OP_1548-OP_1250        ;
  4711. OPW_11_ADC    DW    MN_ADC-MN_AAA+04000H    ;11 ADC
  4712. OPJ_11        DW    OP_1548-OP_1250        ;
  4713. OPW_12_ADC    DW    MN_ADC-MN_AAA+01000H    ;12 ADC
  4714. OPJ_12        DW    OP_15AE-OP_1250        ;
  4715. OPW_13_ADC    DW    MN_ADC-MN_AAA+01000H    ;13 ADC
  4716. OPJ_13        DW    OP_15AE-OP_1250        ;
  4717. OPW_14_ADC    DW    MN_ADC-MN_AAA        ;14 ADC
  4718. OPJ_14        DW    OP_131D-OP_1250        ;
  4719. OPW_15_ADC    DW    MN_ADC-MN_AAA        ;15 ADC
  4720. OPJ_15        DW    OP_131D-OP_1250        ;
  4721. OPW_16_PUSH_ES    DW    MN_PUSH-MN_AAA        ;16 PUSH ES
  4722. OPJ_16        DW    OP_156A-OP_1250        ;
  4723. OPW_17_POP_ES    DW    MN_POP-MN_AAA        ;17 POP ES
  4724. OPJ_17        DW    OP_156A-OP_1250        ;
  4725. OPW_18_SBB    DW    MN_SBB-MN_AAA+04000H    ;18 SBB
  4726. OPJ_18        DW    OP_1548-OP_1250        ;
  4727. OPW_19_SBB    DW    MN_SBB-MN_AAA+04000H    ;19 SBB
  4728. OPJ_19        DW    OP_1548-OP_1250        ;
  4729. OPW_1A_SBB    DW    MN_SBB-MN_AAA+01000H    ;1A SBB
  4730. OPJ_1A        DW    OP_15AE-OP_1250        ;
  4731. OPW_1B_SBB    DW    MN_SBB-MN_AAA+01000H    ;1B SBB
  4732. OPJ_1B        DW    OP_15AE-OP_1250        ;
  4733. OPW_1C_SBB    DW    MN_SBB-MN_AAA        ;1C SBB
  4734. OPJ_1C        DW    OP_131D-OP_1250        ;
  4735. OPW_1D_SBB    DW    MN_SBB-MN_AAA        ;1D SBB
  4736. OPJ_1D        DW    OP_131D-OP_1250        ;
  4737. OPW_1E_PUSH_DS    DW    MN_PUSH-MN_AAA        ;1E PUSH DS
  4738. OPJ_1E        DW    OP_156A-OP_1250        ;
  4739. OPW_1F_POP_DS    DW    MN_POP-MN_AAA        ;1F POP DS
  4740. OPJ_1F        DW    OP_156A-OP_1250        ;
  4741. OPW_20_AND    DW    MN_AND-MN_AAA+04000H    ;20 AND
  4742. OPJ_20        DW    OP_1548-OP_1250        ;
  4743. OPW_21_AND    DW    MN_AND-MN_AAA+04000H    ;21 AND
  4744. OPJ_21        DW    OP_1548-OP_1250        ;
  4745. OPW_22_AND    DW    MN_AND-MN_AAA+01000H    ;22 AND
  4746. OPJ_22        DW    OP_15AE-OP_1250        ;
  4747. OPW_23_AND    DW    MN_AND-MN_AAA+01000H    ;23 AND
  4748. OPJ_23        DW    OP_15AE-OP_1250        ;
  4749. OPW_24_AND    DW    MN_AND-MN_AAA        ;24 AND
  4750. OPJ_24        DW    OP_131D-OP_1250        ;
  4751. OPW_25_AND    DW    MN_AND-MN_AAA        ;25 AND
  4752. OPJ_25        DW    OP_131D-OP_1250        ;
  4753. OPW_26_ES_COLON    DW    MN_AAA-MN_AAA        ;26 ES:
  4754. OPJ_26        DW    OP_1250-OP_1250        ;
  4755. OPW_27_DAA    DW    MN_DAA-MN_AAA        ;27 DAA
  4756. OPJ_27        DW    OP_17CA-OP_1250        ;
  4757. OPW_28_SUB    DW    MN_SUB-MN_AAA+04000H    ;28 SUB
  4758. OPJ_28        DW    OP_1548-OP_1250        ;
  4759. OPW_29_SUB    DW    MN_SUB-MN_AAA+04000H    ;29 SUB
  4760. OPJ_29        DW    OP_1548-OP_1250        ;
  4761. OPW_2A_SUB    DW    MN_SUB-MN_AAA+01000H    ;2A SUB
  4762. OPJ_2A        DW    OP_15AE-OP_1250        ;
  4763. OPW_2B_SUB    DW    MN_SUB-MN_AAA+01000H    ;2B SUB
  4764. OPJ_2B        DW    OP_15AE-OP_1250        ;
  4765. OPW_2C_SUB    DW    MN_SUB-MN_AAA        ;2C SUB
  4766. OPJ_2C        DW    OP_131D-OP_1250        ;
  4767. OPW_2D_SUB    DW    MN_SUB-MN_AAA        ;2D SUB
  4768. OPJ_2D        DW    OP_131D-OP_1250        ;
  4769. OPW_2E_CS_COLON    DW    MN_AAA-MN_AAA        ;2E CS:
  4770. OPJ_2E        DW    OP_1250-OP_1250        ;
  4771. OPW_2F_DAS    DW    MN_DAS-MN_AAA        ;2F DAS
  4772. OPJ_2F        DW    OP_17CA-OP_1250        ;
  4773. OPW_30_XOR    DW    MN_XOR-MN_AAA+04000H    ;30 XOR
  4774. OPJ_30        DW    OP_1548-OP_1250        ;
  4775. OPW_31_XOR    DW    MN_XOR-MN_AAA+04000H    ;31 XOR
  4776. OPJ_31        DW    OP_1548-OP_1250        ;
  4777. OPW_32_XOR    DW    MN_XOR-MN_AAA+01000H    ;32 XOR
  4778. OPJ_32        DW    OP_15AE-OP_1250        ;
  4779. OPW_33_XOR    DW    MN_XOR-MN_AAA+01000H    ;33 XOR
  4780. OPJ_33        DW    OP_15AE-OP_1250        ;
  4781. OPW_34_XOR    DW    MN_XOR-MN_AAA        ;34 XOR
  4782. OPJ_34        DW    OP_131D-OP_1250        ;
  4783. OPW_35_XOR    DW    MN_XOR-MN_AAA        ;35 XOR
  4784. OPJ_35        DW    OP_131D-OP_1250        ;
  4785. OPW_36_SS_COLON    DW    MN_AAA-MN_AAA        ;36 SS:
  4786. OPJ_36        DW    OP_1250-OP_1250        ;
  4787. OPW_37_AAA    DW    MN_AAA-MN_AAA        ;37 AAA
  4788. OPJ_37        DW    OP_17CA-OP_1250        ;
  4789. OPW_38_CMP    DW    MN_CMP-MN_AAA+02000H    ;38 CMP
  4790. OPJ_38        DW    OP_1548-OP_1250        ;
  4791. OPW_39_CMP    DW    MN_CMP-MN_AAA+02000H    ;39 CMP
  4792. OPJ_39        DW    OP_1548-OP_1250        ;
  4793. OPW_3A_CMP    DW    MN_CMP-MN_AAA+02000H    ;3A CMP
  4794. OPJ_3A        DW    OP_15AE-OP_1250        ;
  4795. OPW_3B_CMP    DW    MN_CMP-MN_AAA+02000H    ;3B CMP
  4796. OPJ_3B        DW    OP_15AE-OP_1250        ;
  4797. OPW_3C_CMP    DW    MN_CMP-MN_AAA        ;3C CMP
  4798. OPJ_3C        DW    OP_131D-OP_1250        ;
  4799. OPW_3D_CMP    DW    MN_CMP-MN_AAA        ;3D CMP
  4800. OPJ_3D        DW    OP_131D-OP_1250        ;
  4801. OPW_3E_DS_COLON    DW    MN_AAA-MN_AAA        ;3E DS:
  4802. OPJ_3E        DW    OP_1250-OP_1250        ;
  4803. OPW_3F_AAS    DW    MN_AAS-MN_AAA        ;3F AAS
  4804. OPJ_3F        DW    OP_17CA-OP_1250        ;
  4805. OPW_40_INC_AX    DW    MN_INC-MN_AAA        ;40 INC AX
  4806. OPJ_40        DW    OP_155E-OP_1250        ;
  4807. OPW_41_INC_CX    DW    MN_INC-MN_AAA        ;41 INC CX
  4808. OPJ_41        DW    OP_155E-OP_1250        ;
  4809. OPW_42_INC_DX    DW    MN_INC-MN_AAA        ;42 INC DX
  4810. OPJ_42        DW    OP_155E-OP_1250        ;
  4811. OPW_43_INC_BX    DW    MN_INC-MN_AAA        ;43 INC BX
  4812. OPJ_43        DW    OP_155E-OP_1250        ;
  4813. OPW_44_INC_SP    DW    MN_INC-MN_AAA        ;44 INC SP
  4814. OPJ_44        DW    OP_155E-OP_1250        ;
  4815. OPW_45_INC_BP    DW    MN_INC-MN_AAA        ;45 INC BP
  4816. OPJ_45        DW    OP_155E-OP_1250        ;
  4817. OPW_46_INC_SI    DW    MN_INC-MN_AAA        ;46 INC SI
  4818. OPJ_46        DW    OP_155E-OP_1250        ;
  4819. OPW_47_INC_DI    DW    MN_INC-MN_AAA        ;47 INC DI
  4820. OPJ_47        DW    OP_155E-OP_1250        ;
  4821. OPW_48_DEC_AX    DW    MN_DEC-MN_AAA        ;48 DEC AX
  4822. OPJ_48        DW    OP_155E-OP_1250        ;
  4823. OPW_49_DEC_CX    DW    MN_DEC-MN_AAA        ;49 DEC CX
  4824. OPJ_49        DW    OP_155E-OP_1250        ;
  4825. OPW_4A_DEC_DX    DW    MN_DEC-MN_AAA        ;4A DEC DX
  4826. OPJ_4A        DW    OP_155E-OP_1250        ;
  4827. OPW_4B_DEC_BX    DW    MN_DEC-MN_AAA        ;4B DEC BX
  4828. OPJ_4B        DW    OP_155E-OP_1250        ;
  4829. OPW_4C_DEC_SP    DW    MN_DEC-MN_AAA        ;4C DEC SP
  4830. OPJ_4C        DW    OP_155E-OP_1250        ;
  4831. OPW_4D_DEC_BP    DW    MN_DEC-MN_AAA        ;4D DEC BP
  4832. OPJ_4D        DW    OP_155E-OP_1250        ;
  4833. OPW_4E_DEC_SI    DW    MN_DEC-MN_AAA        ;4E DEC SI
  4834. OPJ_4E        DW    OP_155E-OP_1250        ;
  4835. OPW_4F_DEC_DI    DW    MN_DEC-MN_AAA        ;4F DEC DI
  4836. OPJ_4F        DW    OP_155E-OP_1250        ;
  4837. OPW_50_PUSH_AX    DW    MN_PUSH-MN_AAA        ;50 PUSH AX
  4838. OPJ_50        DW    OP_155E-OP_1250        ;
  4839. OPW_51_PUSH_CX    DW    MN_PUSH-MN_AAA        ;51 PUSH CX
  4840. OPJ_51        DW    OP_155E-OP_1250        ;
  4841. OPW_52_PUSH_DX    DW    MN_PUSH-MN_AAA        ;52 PUSH DX
  4842. OPJ_52        DW    OP_155E-OP_1250        ;
  4843. OPW_53_PUSH_BX    DW    MN_PUSH-MN_AAA        ;53 PUSH BX
  4844. OPJ_53        DW    OP_155E-OP_1250        ;
  4845. OPW_54_PUSH_SP    DW    MN_PUSH-MN_AAA        ;54 PUSH SP
  4846. OPJ_54        DW    OP_155E-OP_1250        ;
  4847. OPW_55_PUSH_BP    DW    MN_PUSH-MN_AAA        ;55 PUSH BP
  4848. OPJ_55        DW    OP_155E-OP_1250        ;
  4849. OPW_56_PUSH_SI    DW    MN_PUSH-MN_AAA        ;56 PUSH SI
  4850. OPJ_56        DW    OP_155E-OP_1250        ;
  4851. OPW_57_PUSH_DI    DW    MN_PUSH-MN_AAA        ;57 PUSH DI
  4852. OPJ_57        DW    OP_155E-OP_1250        ;
  4853. OPW_58_POP_AX    DW    MN_POP-MN_AAA        ;58 POP AX
  4854. OPJ_58        DW    OP_155E-OP_1250        ;
  4855. OPW_59_POP_CX    DW    MN_POP-MN_AAA        ;59 POP CX
  4856. OPJ_59        DW    OP_155E-OP_1250        ;
  4857. OPW_5A_POP_DX    DW    MN_POP-MN_AAA        ;5A POP DX
  4858. OPJ_5A        DW    OP_155E-OP_1250        ;
  4859. OPW_5B_POP_BX    DW    MN_POP-MN_AAA        ;5B POP BX
  4860. OPJ_5B        DW    OP_155E-OP_1250        ;
  4861. OPW_5C_POP_SP    DW    MN_POP-MN_AAA        ;5C POP SP
  4862. OPJ_5C        DW    OP_155E-OP_1250        ;
  4863. OPW_5D_POP_BP    DW    MN_POP-MN_AAA        ;5D POP BP
  4864. OPJ_5D        DW    OP_155E-OP_1250        ;
  4865. OPW_5E_POP_SI    DW    MN_POP-MN_AAA        ;5E POP SI
  4866. OPJ_5E        DW    OP_155E-OP_1250        ;
  4867. OPW_5F_POP_DI    DW    MN_POP-MN_AAA        ;5F POP DI
  4868. OPJ_5F        DW    OP_155E-OP_1250        ;
  4869. OPW_60_???    DW    0000H            ;60 ???
  4870. OPJ_60        DW    OP_17D1-OP_1250        ;
  4871. OPW_61_???    DW    0000H            ;61 ???
  4872. OPJ_61        DW    OP_17D1-OP_1250        ;
  4873. OPW_62_???    DW    0000H            ;62 ???
  4874. OPJ_62        DW    OP_17D1-OP_1250        ;
  4875. OPW_63_???    DW    0000H            ;63 ???
  4876. OPJ_63        DW    OP_17D1-OP_1250        ;
  4877. OPW_64_???    DW    0000H            ;64 ???
  4878. OPJ_64        DW    OP_17D1-OP_1250        ;
  4879. OPW_65_???    DW    0000H            ;65 ???
  4880. OPJ_65        DW    OP_17D1-OP_1250        ;
  4881. OPW_66_???    DW    0000H            ;66 ???
  4882. OPJ_66        DW    OP_17D1-OP_1250        ;
  4883. OPW_67_???    DW    0000H            ;67 ???
  4884. OPJ_67        DW    OP_17D1-OP_1250        ;
  4885. OPW_68_???    DW    0000H            ;68 ???
  4886. OPJ_68        DW    OP_17D1-OP_1250        ;
  4887. OPW_69_???    DW    0000H            ;69 ???
  4888. OPJ_69        DW    OP_17D1-OP_1250        ;
  4889. OPW_6A_???    DW    0000H            ;6A ???
  4890. OPJ_6A        DW    OP_17D1-OP_1250        ;
  4891. OPW_6B_???    DW    0000H            ;6B ???
  4892. OPJ_6B        DW    OP_17D1-OP_1250        ;
  4893. OPW_6C_???    DW    0000H            ;6C ???
  4894. OPJ_6C        DW    OP_17D1-OP_1250        ;
  4895. OPW_6D_???    DW    0000H            ;6D ???
  4896. OPJ_6D        DW    OP_17D1-OP_1250        ;
  4897. OPW_6E_???    DW    0000H            ;6E ???
  4898. OPJ_6E        DW    OP_17D1-OP_1250        ;
  4899. OPW_6F_???    DW    0000H            ;6F ???
  4900. OPJ_6F        DW    OP_17D1-OP_1250        ;
  4901. OPW_70_JO    DW    MN_JO-MN_AAA+05000H    ;70 JO
  4902. OPJ_70        DW    OP_15BE-OP_1250+0A000H    ;
  4903. OPW_71_JNO    DW    MN_JNO-MN_AAA+05000H    ;71 JNO
  4904. OPJ_71        DW    OP_15BE-OP_1250+0A000H    ;
  4905. OPW_72_JB    DW    MN_JB-MN_AAA+05000H    ;72 JB
  4906. OPJ_72        DW    OP_15BE-OP_1250+0A000H    ;
  4907. OPW_73_JAE_JNB    DW    MN_JNB-MN_AAA+05000H    ;73 JAE/JNB
  4908. OPJ_73        DW    OP_15BE-OP_1250+0A000H    ;
  4909. OPW_74_JZ    DW    MN_JZ-MN_AAA+05000H    ;74 JZ/JE
  4910. OPJ_74        DW    OP_15BE-OP_1250+0A000H    ;
  4911. OPW_75_JNZ    DW    MN_JNZ-MN_AAA+05000H    ;75 JNZ/JNE
  4912. OPJ_75        DW    OP_15BE-OP_1250+0A000H    ;
  4913. OPW_76_JBE    DW    MN_JBE-MN_AAA+05000H    ;76 JBE
  4914. OPJ_76        DW    OP_15BE-OP_1250+0A000H    ;
  4915. OPW_77_JA    DW    MN_JA-MN_AAA+05000H    ;77 JA
  4916. OPJ_77        DW    OP_15BE-OP_1250+0A000H    ;
  4917. OPW_78_JS    DW    MN_JS-MN_AAA+05000H    ;78 JS
  4918. OPJ_78        DW    OP_15BE-OP_1250+0A000H    ;
  4919. OPW_79_JNS    DW    MN_JNS-MN_AAA+05000H    ;79 JNS
  4920. OPJ_79        DW    OP_15BE-OP_1250+0A000H    ;
  4921. OPW_7A_JP    DW    MN_JPE-MN_AAA+05000H    ;7A JP
  4922. OPJ_7A        DW    OP_15BE-OP_1250+0A000H    ;
  4923. OPW_7B_JNP    DW    MN_JPO-MN_AAA+05000H    ;7B JNP
  4924. OPJ_7B        DW    OP_15BE-OP_1250+0A000H    ;
  4925. OPW_7C_JL    DW    MN_JL-MN_AAA+05000H    ;7C JL
  4926. OPJ_7C        DW    OP_15BE-OP_1250+0A000H    ;
  4927. OPW_7D_JGE    DW    MN_JGE-MN_AAA+05000H    ;7D JGE
  4928. OPJ_7D        DW    OP_15BE-OP_1250+0A000H    ;
  4929. OPW_7E_JLE    DW    MN_JLE-MN_AAA+05000H    ;7E JLE
  4930. OPJ_7E        DW    OP_15BE-OP_1250+0A000H    ;
  4931. OPW_7F_JG    DW    MN_JG-MN_AAA+05000H    ;7F JG
  4932. OPJ_7F        DW    OP_15BE-OP_1250+0A000H    ;
  4933. OPW_80_TABLE_V    DW    OFFSET MNV_1FD8        ;80 (TABLE V)
  4934. OPJ_80        DW    OP_12B8-OP_1250        ;
  4935. OPW_81_TABLE_V    DW    OFFSET MNV_1FD8        ;81 (TABLE V)
  4936. OPJ_81        DW    OP_12B8-OP_1250        ;
  4937. OPW_82_TABLE_V    DW    OFFSET MNV_1FD8        ;82 (TABLE V)
  4938. OPJ_82        DW    OP_12B8-OP_1250        ;
  4939. OPW_83_TABLE_V    DW    OFFSET MNV_1FD8        ;83 (TABLE V)
  4940. OPJ_83        DW    OP_12C0-OP_1250        ;
  4941. OPW_84_TEST    DW    MN_TEST-MN_AAA+02000H    ;84 TEST
  4942. OPJ_84        DW    OP_15AE-OP_1250        ;
  4943. OPW_85_TEST    DW    MN_TEST-MN_AAA+02000H    ;85 TEST
  4944. OPJ_85        DW    OP_15AE-OP_1250        ;
  4945. OPW_86_XCHG    DW    MN_XCHG-MN_AAA+03000H    ;86 XCHG
  4946. OPJ_86        DW    OP_15AE-OP_1250        ;
  4947. OPW_87_XCHG    DW    MN_XCHG-MN_AAA+03000H    ;87 XCHG
  4948. OPJ_87        DW    OP_15AE-OP_1250        ;
  4949. OPW_88_MOV    DW    MN_MOV-MN_AAA+03000H    ;88 MOV
  4950. OPJ_88        DW    OP_1548-OP_1250        ;
  4951. OPW_89_MOV    DW    MN_MOV-MN_AAA+03000H    ;89 MOV
  4952. OPJ_89        DW    OP_1548-OP_1250        ;
  4953. OPW_8A_MOV    DW    MN_MOV-MN_AAA+01000H    ;8A MOV
  4954. OPJ_8A        DW    OP_15AE-OP_1250        ;
  4955. OPW_8B_MOV    DW    MN_MOV-MN_AAA+01000H    ;8B MOV
  4956. OPJ_8B        DW    OP_15AE-OP_1250        ;
  4957. OPW_8C_MOV    DW    MN_MOV-MN_AAA+03000H    ;8C MOV
  4958. OPJ_8C        DW    OP_1575-OP_1250        ;
  4959. OPW_8D_LEA    DW    MN_LEA-MN_AAA+01000H    ;8D LEA
  4960. OPJ_8D        DW    OP_15A9-OP_1250        ;
  4961. OPW_8E_MOV    DW    MN_MOV-MN_AAA+01000H    ;8E MOV
  4962. OPJ_8E        DW    OP_158F-OP_1250        ;
  4963. OPW_8F_POP    DW    MN_POP-MN_AAA+03000H    ;8F POP
  4964. OPJ_8F        DW    OP_15A0-OP_1250        ;
  4965. OPW_90_NOP    DW    MN_NOP-MN_AAA        ;90 NOP
  4966. OPJ_90        DW    OP_17CA-OP_1250        ;
  4967. OPW_91_XCHG    DW    MN_XCHG-MN_AAA        ;91 XCHG
  4968. OPJ_91        DW    OP_15E9-OP_1250        ;
  4969. OPW_92_XCHG    DW    MN_XCHG-MN_AAA        ;92 XCHG
  4970. OPJ_92        DW    OP_15E9-OP_1250        ;
  4971. OPW_93_XCHG    DW    MN_XCHG-MN_AAA        ;93 XCHG
  4972. OPJ_93        DW    OP_15E9-OP_1250        ;
  4973. OPW_94_XCHG    DW    MN_XCHG-MN_AAA        ;94 XCHG
  4974. OPJ_94        DW    OP_15E9-OP_1250        ;
  4975. OPW_95_XCHG    DW    MN_XCHG-MN_AAA        ;95 XCHG
  4976. OPJ_95        DW    OP_15E9-OP_1250        ;
  4977. OPW_96_XCHG    DW    MN_XCHG-MN_AAA        ;96 XCHG
  4978. OPJ_96        DW    OP_15E9-OP_1250        ;
  4979. OPW_97_XCHG    DW    MN_XCHG-MN_AAA        ;97 XCHG
  4980. OPJ_97        DW    OP_15E9-OP_1250        ;
  4981. OPW_98_CBW    DW    MN_CBW-MN_AAA        ;98 CBW
  4982. OPJ_98        DW    OP_17CA-OP_1250        ;
  4983. OPW_99_CDW    DW    MN_CWD-MN_AAA        ;99 CDW
  4984. OPJ_99        DW    OP_17CA-OP_1250        ;
  4985. OPW_9A_CALL_FAR    DW    MN_CALL_FAR-MN_AAA+06000H ;9A CALL FAR
  4986. OPJ_9A        DW    OP_13FB-OP_1250+0A000H    ;
  4987. OPW_9B_WAIT    DW    MN_WAIT-MN_AAA        ;9B WAIT
  4988. OPJ_9B        DW    OP_17CA-OP_1250        ;
  4989. OPW_9C_PUSHF    DW    MN_PUSHF-MN_AAA        ;9C PUSHF
  4990. OPJ_9C        DW    OP_17CA-OP_1250        ;
  4991. OPW_9D_POPF    DW    MN_POPF-MN_AAA        ;9D POPF
  4992. OPJ_9D        DW    OP_17CA-OP_1250        ;
  4993. OPW_9E_SAHF    DW    MN_SAHF-MN_AAA        ;9E SAHF
  4994. OPJ_9E        DW    OP_17CA-OP_1250        ;
  4995. OPW_9F_LAHF    DW    MN_LAHF-MN_AAA        ;9F LAHF
  4996. OPJ_9F        DW    OP_17CA-OP_1250        ;
  4997. OPW_A0_MOV    DW    MN_MOV-MN_AAA+01000H    ;A0 MOV
  4998. OPJ_A0        DW    OP_1417-OP_1250        ;
  4999. OPW_A1_MOV    DW    MN_MOV-MN_AAA+01000H    ;A1 MOV
  5000. OPJ_A1        DW    OP_1417-OP_1250        ;
  5001. OPW_A2_MOV    DW    MN_MOV-MN_AAA+03000H    ;A2 MOV
  5002. OPJ_A2        DW    OP_15F4-OP_1250        ;
  5003. OPW_A3_MOV    DW    MN_MOV-MN_AAA+03000H    ;A3 MOV
  5004. OPJ_A3        DW    OP_15F4-OP_1250        ;
  5005. OPW_A4_MOVSB    DW    MN_MOVSB-MN_AAA        ;A4 MOVSB
  5006. OPJ_A4        DW    OP_15FD_STRINGS-OP_1250    ;
  5007. OPW_A5_MOVSW    DW    MN_MOVSW-MN_AAA        ;A5 MOVSW
  5008. OPJ_A5        DW    OP_15FD_STRINGS-OP_1250    ;
  5009. OPW_A6_CMPSB    DW    MN_CMPSB-MN_AAA        ;A6 CMPSB
  5010. OPJ_A6        DW    OP_15FD_STRINGS-OP_1250    ;
  5011. OPW_A7_CMPSW    DW    MN_CMPSW-MN_AAA        ;A7 CMPSW
  5012. OPJ_A7        DW    OP_15FD_STRINGS-OP_1250    ;
  5013. OPW_A8_TEST    DW    MN_TEST-MN_AAA        ;A8 TEST
  5014. OPJ_A8        DW    OP_131D-OP_1250        ;
  5015. OPW_A9_TEST    DW    MN_TEST-MN_AAA        ;A9 TEST
  5016. OPJ_A9        DW    OP_131D-OP_1250        ;
  5017. OPW_AA_STOSB    DW    MN_STOSB-MN_AAA        ;AA STOSB
  5018. OPJ_AA        DW    OP_15FD_STRINGS-OP_1250    ;
  5019. OPW_AB_STOSW    DW    MN_STOSW-MN_AAA        ;AB STOSW
  5020. OPJ_AB        DW    OP_15FD_STRINGS-OP_1250    ;
  5021. OPW_AC_LODSB    DW    MN_LODSB-MN_AAA        ;AC LODSB
  5022. OPJ_AC        DW    OP_15FD_STRINGS-OP_1250    ;
  5023. OPW_AD_LODSW    DW    MN_LODSW-MN_AAA        ;AD LODSW
  5024. OPJ_AD        DW    OP_15FD_STRINGS-OP_1250    ;
  5025. OPW_AE_SCASB    DW    MN_SCASB-MN_AAA        ;AE SCASB
  5026. OPJ_AE        DW    OP_15FD_STRINGS-OP_1250    ;
  5027. OPW_AF_SCASW    DW    MN_SCASW-MN_AAA        ;AF SCASW
  5028. OPJ_AF        DW    OP_15FD_STRINGS-OP_1250    ;
  5029. OPW_B0_MOV    DW    MN_MOV-MN_AAA        ;B0 MOV
  5030. OPJ_B0        DW    OP_162D-OP_1250        ;
  5031. OPW_B1_MOV    DW    MN_MOV-MN_AAA        ;B1 MOV
  5032. OPJ_B1        DW    OP_162D-OP_1250        ;
  5033. OPW_B2_MOV    DW    MN_MOV-MN_AAA        ;B2 MOV
  5034. OPJ_B2        DW    OP_162D-OP_1250        ;
  5035. OPW_B3_MOV    DW    MN_MOV-MN_AAA        ;B3 MOV
  5036. OPJ_B3        DW    OP_162D-OP_1250        ;
  5037. OPW_B4_MOV    DW    MN_MOV-MN_AAA        ;B4 MOV
  5038. OPJ_B4        DW    OP_162D-OP_1250        ;
  5039. OPW_B5_MOV    DW    MN_MOV-MN_AAA        ;B5 MOV
  5040. OPJ_B5        DW    OP_162D-OP_1250        ;
  5041. OPW_B6_MOV    DW    MN_MOV-MN_AAA        ;B6 MOV
  5042. OPJ_B6        DW    OP_162D-OP_1250        ;
  5043. OPW_B7_MOV    DW    MN_MOV-MN_AAA        ;B7 MOV
  5044. OPJ_B7        DW    OP_162D-OP_1250        ;
  5045. OPW_B8_MOV    DW    MN_MOV-MN_AAA        ;B8 MOV
  5046. OPJ_B8        DW    OP_1634-OP_1250        ;
  5047. OPW_B9_MOV    DW    MN_MOV-MN_AAA        ;B9 MOV
  5048. OPJ_B9        DW    OP_1634-OP_1250        ;
  5049. OPW_BA_MOV    DW    MN_MOV-MN_AAA        ;BA MOV
  5050. OPJ_BA        DW    OP_1634-OP_1250        ;
  5051. OPW_BB_MOV    DW    MN_MOV-MN_AAA        ;BB MOV
  5052. OPJ_BB        DW    OP_1634-OP_1250        ;
  5053. OPW_BC_MOV    DW    MN_MOV-MN_AAA        ;BC MOV
  5054. OPJ_BC        DW    OP_1634-OP_1250        ;
  5055. OPW_BD_MOV    DW    MN_MOV-MN_AAA        ;BD MOV
  5056. OPJ_BD        DW    OP_1634-OP_1250        ;
  5057. OPW_BE_MOV    DW    MN_MOV-MN_AAA        ;BE MOV
  5058. OPJ_BE        DW    OP_1634-OP_1250        ;
  5059. OPW_BF_MOV    DW    MN_MOV-MN_AAA        ;BF MOV
  5060. OPJ_BF        DW    OP_1634-OP_1250        ;
  5061. OPW_C0_???    DW    0000H            ;C0 ???
  5062. OPJ_C0        DW    OP_17D1-OP_1250        ;
  5063. OPW_C1_???    DW    0000H            ;C1 ???
  5064. OPJ_C1        DW    OP_17D1-OP_1250        ;
  5065. OPW_C2_RETN    DW    MN_RET_NEAR_POP-MN_AAA    ;C2 RETN POP
  5066. OPJ_C2        DW    OP_1309-OP_1250        ;
  5067. OPW_C3_RETN    DW    MN_RET_NEAR-MN_AAA    ;C3 RETN
  5068. OPJ_C3        DW    OP_17B2-OP_1250        ;
  5069. OPW_C4_LES    DW    MN_LES-MN_AAA+01000H    ;C4 LES
  5070. OPJ_C4        DW    OP_12ED-OP_1250        ;
  5071. OPW_C5_LDS    DW    MN_LDS-MN_AAA+01000H    ;C5 LDS
  5072. OPJ_C5        DW    OP_12ED-OP_1250        ;
  5073. OPW_C6_MOV    DW    MN_MOV-MN_AAA+03000H    ;C6 MOV
  5074. OPJ_C6        DW    OP_12FF-OP_1250        ;
  5075. OPW_C7_MOV    DW    MN_MOV-MN_AAA+03000H    ;C7 MOV
  5076. OPJ_C7        DW    OP_12FF-OP_1250        ;
  5077. OPW_C8_???    DW    0000H            ;C8 ???
  5078. OPJ_C8        DW    OP_17D1-OP_1250        ;
  5079. OPW_C9_???    DW    0000H            ;C9 ???
  5080. OPJ_C9        DW    OP_17D1-OP_1250        ;
  5081. OPW_CA_RETF    DW    MN_RET_FAR_POP-MN_AAA    ;CA RETF POP
  5082. OPJ_CA        DW    OP_130E-OP_1250        ;
  5083. OPW_CB_RETF    DW    MN_RET_FAR-MN_AAA    ;CB RETF
  5084. OPJ_CB        DW    OP_17BD-OP_1250        ;
  5085. OPW_CC_INT_3    DW    MN_INT-MN_AAA+06000H    ;CC INT 3
  5086. OPJ_CC        DW    OP_163E-OP_1250+02000H    ;
  5087. OPW_CD_INT    DW    MN_INT-MN_AAA+06000H    ;CD INT
  5088. OPJ_CD        DW    OP_1654-OP_1250+02000H    ;
  5089. OPW_CE_INTO    DW    MN_INTO-MN_AAA        ;CE INTO
  5090. OPJ_CE        DW    OP_17CA-OP_1250        ;
  5091. OPW_CF_IRET    DW    MN_IRET-MN_AAA        ;CF IRET
  5092. OPJ_CF        DW    OP_17B7-OP_1250+02000H    ;
  5093. OPW_D0_TABLE_W    DW    OFFSET MNW_1FC0        ;D0 (TABLE W)
  5094. OPJ_D0        DW    OP_1768-OP_1250        ;
  5095. OPW_D1_TABLE_W    DW    OFFSET MNW_1FC0        ;D1 (TABLE W)
  5096. OPJ_D1        DW    OP_1768-OP_1250        ;
  5097. OPW_D2_TABLE_W    DW    OFFSET MNW_1FC0        ;D2 (TABLE W)
  5098. OPJ_D2        DW    OP_1768-OP_1250        ;
  5099. OPW_D3_TABLE_W    DW    OFFSET MNW_1FC0        ;D3 (TABLE W)
  5100. OPJ_D3        DW    OP_1768-OP_1250        ;
  5101. OPW_D4_AAM    DW    MN_AAM-MN_AAA        ;D4 AAM
  5102. OPJ_D4        DW    OP_153D-OP_1250        ;
  5103. OPW_D5_AAD    DW    MN_AAD-MN_AAA        ;D5 AAD
  5104. OPJ_D5        DW    OP_153D-OP_1250        ;
  5105. OPW_D6_??DB??    DW    MN_DB-MN_AAA        ;D6 ??DB??
  5106. OPJ_D6        DW    OP_17D1-OP_1250        ;
  5107. OPW_D7_XLAT    DW    MN_XLAT-MN_AAA        ;D7 XLAT
  5108. OPJ_D7        DW    OP_17C7-OP_1250        ;
  5109. OPW_D8_ESC_0    DW    OFFSET ESC_2020        ;D8 ESC 0
  5110. OPJ_D8        DW    OP_1660-OP_1250        ;
  5111. OPW_D9_ESC_1    DW    OFFSET ESC_203C        ;D9 ESC 1
  5112. OPJ_D9        DW    OP_1683_ESC1-OP_1250    ;
  5113. OPW_DA_ESC_2    DW    OFFSET ESC_2094        ;DA ESC 2
  5114. OPJ_DA        DW    OP_16B2-OP_1250        ;
  5115. OPW_DB_ESC_3    DW    OFFSET ESC_20A4        ;DB ESC 3
  5116. OPJ_DB        DW    OP_16B8_ESC3-OP_1250    ;
  5117. OPW_DC_ESC_4    DW    OFFSET ESC_2020        ;DC ESC 4
  5118. OPJ_DC        DW    OP_167A-OP_1250        ;
  5119. OPW_DD_ESC_5    DW    OFFSET ESC_20BC        ;DD ESC 5
  5120. OPJ_DD        DW    OP_16CC_ESC5_7-OP_1250    ;
  5121. OPW_DE_ESC_6    DW    OFFSET ESC_2094        ;DE ESC 6
  5122. OPJ_DE        DW    OP_16ED_ESC6-OP_1250    ;
  5123. OPW_DF_ESC_7    DW    OFFSET ESC_20E4        ;DF ESC 7
  5124. OPJ_DF        DW    OP_16CC_ESC5_7-OP_1250    ;
  5125. OPW_E0_LOOPNZ    DW    MN_LOOPNZ-MN_AAA+05000H    ;E0 LOOPNZ
  5126. OPJ_E0        DW    OP_15BE-OP_1250+0A000H    ;
  5127. OPW_E1_LOOPZ    DW    MN_LOOPZ-MN_AAA+05000H    ;E1 LOOPZ
  5128. OPJ_E1        DW    OP_15BE-OP_1250+0A000H    ;
  5129. OPW_E2_LOOP    DW    MN_LOOP-MN_AAA+05000H    ;E2 LOOP
  5130. OPJ_E2        DW    OP_15BE-OP_1250+0A000H    ;
  5131. OPW_E3_JCXZ    DW    MN_JCXZ-MN_AAA+05000H    ;E3 JCXZ
  5132. OPJ_E3        DW    OP_15BE-OP_1250+0A000H    ;
  5133. OPW_E4_IN    DW    MN_IN-MN_AAA+07000H    ;E4 IN
  5134. OPJ_E4        DW    OP_164E-OP_1250        ;
  5135. OPW_E5_IN    DW    MN_IN-MN_AAA+07000H    ;E5 IN
  5136. OPJ_E5        DW    OP_164E-OP_1250        ;
  5137. OPW_E6_OUT    DW    MN_OUT-MN_AAA+07000H    ;E6 OUT
  5138. OPJ_E6        DW    OP_1643-OP_1250        ;
  5139. OPW_E7_OUT    DW    MN_OUT-MN_AAA+07000H    ;E7 OUT
  5140. OPJ_E7        DW    OP_1643-OP_1250        ;
  5141. OPW_E8_CALL_NEA    DW    MN_CALL-MN_AAA+06000H    ;E8 CALL NEAR
  5142. OPJ_E8        DW    OP_15DF-OP_1250+0A000H    ;
  5143. OPW_E9_JMP_NEAR    DW    MN_JMP-MN_AAA+05000H    ;E9 JMP NEAR
  5144. OPJ_E9        DW    OP_15C6-OP_1250+0A000H    ;
  5145. OPW_EA_JMP_FAR    DW    MN_JMP_FAR_PTR-MN_AAA+05000H ;EA JMP FAR
  5146. OPJ_EA        DW    OP_13FB-OP_1250+0A000H    ;
  5147. OPW_EB_JMP_SHOR    DW    MN_JMP_SHORT-MN_AAA+05000H ;EB JMP SHORT
  5148. OPJ_EB        DW    OP_15BA-OP_1250+0A000H    ;
  5149. OPW_EC_IN    DW    MN_IN-MN_AAA+07000H    ;EC IN
  5150. OPJ_EC        DW    OP_1754-OP_1250        ;
  5151. OPW_ED_IN    DW    MN_IN-MN_AAA+07000H    ;ED IN
  5152. OPJ_ED        DW    OP_1754-OP_1250        ;
  5153. OPW_EE_OUT    DW    MN_OUT-MN_AAA+07000H    ;EE OUT
  5154. OPJ_EE        DW    OP_175F-OP_1250        ;
  5155. OPW_EF_OUT    DW    MN_OUT-MN_AAA+07000H    ;EF OUT
  5156. OPJ_EF        DW    OP_175F-OP_1250        ;
  5157. OPW_F0_LOCK    DW    MN_LOCK-MN_AAA        ;F0 LOCK
  5158. OPJ_F0        DW    OP_1268-OP_1250        ;
  5159. OPW_F1_???    DW    0000H            ;F1 ???
  5160. OPJ_F1        DW    OP_17D1-OP_1250        ;
  5161. OPW_F2_REPNZ    DW    MN_REPNZ-MN_AAA        ;F2 REPNZ
  5162. OPJ_F2        DW    OP_1268-OP_1250        ;
  5163. OPW_F3_REPZ    DW    MN_REPZ-MN_AAA        ;F3 REPZ
  5164. OPJ_F3        DW    OP_1268-OP_1250        ;
  5165. OPW_F4_HLT    DW    MN_HLT-MN_AAA        ;F4 HLT
  5166. OPJ_F4        DW    OP_17CA-OP_1250        ;
  5167. OPW_F5_CMC    DW    MN_CMC-MN_AAA        ;F5 CMC
  5168. OPJ_F5        DW    OP_17CA-OP_1250        ;
  5169. OPW_F6_TABLE_X    DW    OFFSET MNX_1FF0        ;F6 (TABLE X)
  5170. OPJ_F6        DW    OP_1781-OP_1250        ;
  5171. OPW_F7_TABLE_X    DW    OFFSET MNX_1FF0        ;F7 (TABLE X)
  5172. OPJ_F7        DW    OP_1781-OP_1250        ;
  5173. OPW_F8_CLC    DW    MN_CLC-MN_AAA        ;F8 CLC
  5174. OPJ_F8        DW    OP_17CA-OP_1250        ;
  5175. OPW_F9_STC    DW    MN_STC-MN_AAA        ;F9 STC
  5176. OPJ_F9        DW    OP_17CA-OP_1250        ;
  5177. OPW_FA_CLI    DW    MN_CLI-MN_AAA        ;FA CLI
  5178. OPJ_FA        DW    OP_17CA-OP_1250        ;
  5179. OPW_FB_STI    DW    MN_STI-MN_AAA        ;FB STI
  5180. OPJ_FB        DW    OP_17CA-OP_1250        ;
  5181. OPW_FC_CLD    DW    MN_CLD-MN_AAA        ;FC CLD
  5182. OPJ_FC        DW    OP_17CA-OP_1250        ;
  5183. OPW_FD_STD    DW    MN_STD-MN_AAA        ;FD STD
  5184. OPJ_FD        DW    OP_17CA-OP_1250        ;
  5185. OPW_FE_TABLE_Y    DW    OFFSET MNY_2008        ;FE (TABLE Y)
  5186. OPJ_FE        DW    OP_178B-OP_1250        ;
  5187. OPW_FF_TABLE_Y    DW    OFFSET MNY_2008        ;FF (TABLE Y)
  5188. OPJ_FF        DW    OP_178B-OP_1250        ;
  5189.         DB    10,'Table V, 80-83: DB and DW difference from Mnemonic '
  5190. MNV_1FD8    DB    0            ; op-code table-V
  5191. MNV_00_ADD    DW    MN_ADD-MN_AAA+04000H
  5192. MNV_1FDB    DB    0
  5193. MNV_01_OR    DW    MN_OR-MN_AAA+04000H
  5194. MNV_1FDE    DB    0
  5195. MNV_02_ADC    DW    MN_ADC-MN_AAA+04000H
  5196. MNV_1FE1    DB    0
  5197. MNV_03_SBB    DW    MN_SBB-MN_AAA+04000H
  5198. MNV_1FE4    DB    0
  5199. MNV_04_AND    DW    MN_AND-MN_AAA+04000H
  5200. MNV_1FE7    DB    0
  5201. MNV_05_SUB    DW    MN_SUB-MN_AAA+04000H
  5202. MNV_1FEA    DB    0
  5203. MNV_06_XOR    DW    MN_XOR-MN_AAA+04000H
  5204. MNV_1FED    DB    0
  5205. MNV_07_CMP    DW    MN_CMP-MN_AAA+02000H
  5206.         DB    10, 'Table W, D0-D3:'
  5207. MNW_1FC0    DB    0            ; op-code table-W
  5208. MNW_00_ROL    DW    MN_ROL-MN_AAA+04000H
  5209. MNW_1FC3    DB    0
  5210. MNW_01_ROR    DW    MN_ROR-MN_AAA+04000H
  5211. MNW_1FC6    DB    0
  5212. MNW_02_RCL    DW    MN_RCL-MN_AAA+04000H
  5213. MNW_1FC9    DB    0
  5214. MNW_03_RCR    DW    MN_RCR-MN_AAA+04000H
  5215. MNW_1FCC    DB    0
  5216. MNW_04_SHL    DW    MN_SHL-MN_AAA+04000H
  5217. MNW_1FCF    DB    0
  5218. MNW_05_SHR    DW    MN_SHR-MN_AAA+04000H
  5219. MNW_1FD2    DB    0
  5220. MNW_06_???    DW    0000H
  5221. MNW_1FD5    DB    0
  5222. MNW_07_SAR    DW    MN_SAR-MN_AAA+04000H
  5223.         DB    10, 'Table X, F6,F7:'
  5224. MNX_1FF0    DB    0            ; op-code table-X
  5225. MNX_00_TEST    DW    MN_TEST-MN_AAA+02000H
  5226. MNX_1FF3    DB    0
  5227. MNX_01_???    DW    0000H
  5228. MNX_1FF6    DB    0
  5229. MNX_02_NOT    DW    MN_NOT-MN_AAA+04000H
  5230. MNX_1FF9    DB    0
  5231. MNX_03_NEG    DW    MN_NEG-MN_AAA+04000H
  5232. MNX_1FFC    DB    0
  5233. MNX_04_MUL    DW    MN_MUL-MN_AAA+01000H
  5234. MNX_1FFF    DB    0
  5235. MNX_05_IMUL    DW    MN_IMUL-MN_AAA+01000H
  5236. MNX_2002    DB    0
  5237. MNX_06_DIV    DW    MN_DIV-MN_AAA+01000H
  5238. MNX_2005    DB    0
  5239. MNX_07_IDIV    DW    MN_IDIV-MN_AAA+01000H
  5240.         DB    10, 'Table Y, FE,FF:'
  5241. MNY_2008    DB    0            ; op-code table-Y
  5242. MNY_00_INC    DW    MN_INC-MN_AAA+04000H
  5243. MNY_200B    DB    0
  5244. MNY_01_DEC    DW    MN_DEC-MN_AAA+04000H
  5245. MNY_200E    DB    20H
  5246. MNY_02_CALL_NEA    DW    MN_CALL-MN_AAA+06000H
  5247. MNY_2011    DB    20H
  5248. MNY_03_CALL_FAR    DW    MN_CALL_DW-MN_AAA+06000H
  5249. MNY_2014    DB    20H
  5250. MNY_04_JMP_NEAR    DW    MN_JMP-MN_AAA+05000H
  5251. MNY_2017    DB    20H
  5252. MNY_05_JMP_FAR    DW    MN_JMP_DW_PTR-MN_AAA+05000H
  5253. MNY_201A    DB    0
  5254. MNY_06_??PUSH??    DW    MN_PUSH-MN_AAA+01000H
  5255. MNY_201D    DB    0
  5256. MNY_07_???    DW    0000H
  5257.         DB    10,'Table ESC & String: DW difference from Mnemonic, 1=null '
  5258. ESC_2020    DW    MN_FADD-MN_AAA+01000H
  5259. ESC_2022    DW    MN_FMUL-MN_AAA+01000H
  5260. ESC_2024    DW    MN_FCOM-MN_AAA+01000H
  5261. ESC_2026    DW    MN_FCOMP-MN_AAA+01000H
  5262. ESC_2028    DW    MN_FSUB-MN_AAA+01000H
  5263. ESC_202A    DW    MN_FSUBR-MN_AAA+01000H
  5264. ESC_202C    DW    MN_FDIV-MN_AAA+01000H
  5265. ESC_202E    DW    MN_FDIVR-MN_AAA+01000H
  5266. STR_2030    DW    MN_MOVS-MN_AAA
  5267. STR_2032    DW    MN_CMPS-MN_AAA
  5268. STR_2034    DW    1            ; 1
  5269. STR_2036    DW    1            ; 1
  5270. STR_2038    DW    MN_LODS-MN_AAA
  5271. STR_203A    DW    1            ; 1
  5272. ESC_203C    DW    MN_FLD-MN_AAA+01000H
  5273. ESC_203E    DW    1            ; 1
  5274. ESC_2040    DW    MN_FST-MN_AAA+03000H
  5275. ESC_2042    DW    MN_FSTP-MN_AAA+03000H
  5276. ESC_2044    DW    MN_FLDENV-MN_AAA+01000H
  5277. ESC_2046    DW    MN_FLDCW-MN_AAA+01000H
  5278. ESC_2048    DW    MN_FSTENV-MN_AAA+03000H
  5279. ESC_204A    DW    MN_FSTCW-MN_AAA+03000H
  5280. ESC_204C    DW    MN_FLD-MN_AAA+01000H
  5281. ESC_204E    DW    MN_FXCH-MN_AAA
  5282. ESC_2050    DW    MN_FNOP-MN_AAA
  5283. ESC_2052    DW    MN_FSTP-MN_AAA
  5284. ESC_2054    DW    MN_FCHS-MN_AAA
  5285. ESC_2056    DW    MN_FABS-MN_AAA
  5286. ESC_2058    DW    1            ; 1
  5287. ESC_205A    DW    1            ; 1
  5288. ESC_205C    DW    MN_FTST-MN_AAA
  5289. ESC_205E    DW    MN_FXAM-MN_AAA
  5290. ESC_2060    DW    1            ; 1
  5291. ESC_2062    DW    1            ; 1
  5292. ESC_2064    DW    MN_FLD1-MN_AAA
  5293. ESC_2066    DW    MN_FLDL2T-MN_AAA
  5294. ESC_2068    DW    MN_FLDL2E-MN_AAA
  5295. ESC_206A    DW    MN_FLDPI-MN_AAA
  5296. ESC_206C    DW    MN_FLDLG2-MN_AAA
  5297. ESC_206E    DW    MN_FLDLN2-MN_AAA
  5298. ESC_2070    DW    MN_FLDZ-MN_AAA
  5299. ESC_2072    DW    1            ; 1
  5300. ESC_2074    DW    MN_F2XM1-MN_AAA
  5301. ESC_2076    DW    MN_FYL2X-MN_AAA
  5302. ESC_2078    DW    MN_FPTAN-MN_AAA
  5303. ESC_207A    DW    MN_FPATAN-MN_AAA
  5304. ESC_207C    DW    MN_FXTRACT-MN_AAA
  5305. ESC_207E    DW    1            ; 1
  5306. ESC_2080    DW    MN_FDECSTP-MN_AAA
  5307. ESC_2082    DW    MN_FINCSTP-MN_AAA
  5308. ESC_2084    DW    MN_FPREM-MN_AAA
  5309. ESC_2086    DW    MN_FYL2XP1-MN_AAA
  5310. ESC_2088    DW    MN_FSQRT-MN_AAA
  5311. ESC_208A    DW    1            ; 1
  5312. ESC_208C    DW    MN_FRNDINT-MN_AAA
  5313. ESC_208E    DW    MN_FSCALE-MN_AAA
  5314. ESC_2090    DW    1            ; 1
  5315. ESC_2092    DW    1            ; 1
  5316. ESC_2094    DW    MN_FIADD-MN_AAA+01000H
  5317. ESC_2096    DW    MN_FIMUL-MN_AAA+01000H
  5318. ESC_2098    DW    MN_FICOM-MN_AAA+01000H
  5319. ESC_209A    DW    MN_FICOMP-MN_AAA+01000H
  5320. ESC_209C    DW    MN_FISUB-MN_AAA+01000H
  5321. ESC_209E    DW    MN_FISUBR-MN_AAA+01000H
  5322. ESC_20A0    DW    MN_FIDIV-MN_AAA+01000H
  5323. ESC_20A2    DW    MN_FIDIVR-MN_AAA+01000H
  5324. ESC_20A4    DW    MN_FILD-MN_AAA+01000H
  5325. ESC_20A6    DW    1            ; 1
  5326. ESC_20A8    DW    MN_FIST-MN_AAA+03000H
  5327. ESC_20AA    DW    MN_FISTP-MN_AAA+03000H
  5328. ESC_20AC    DW    1            ; 1
  5329. ESC_20AE    DW    MN_FLD-MN_AAA+01000H
  5330. ESC_20B0    DW    1            ; 1
  5331. ESC_20B2    DW    MN_FSTP-MN_AAA+03000H
  5332. ESC_20B4    DW    MN_FENI-MN_AAA
  5333. ESC_20B6    DW    MN_FDISI-MN_AAA
  5334. ESC_20B8    DW    MN_FCLEX-MN_AAA
  5335. ESC_20BA    DW    MN_FINIT-MN_AAA
  5336. ESC_20BC    DW    MN_FLD-MN_AAA+01000H
  5337. ESC_20BE    DW    1            ; 1
  5338. ESC_20C0    DW    MN_FST-MN_AAA+03000H
  5339. ESC_20C2    DW    MN_FSTP-MN_AAA+03000H
  5340. ESC_20C4    DW    MN_FRSTOR-MN_AAA
  5341. ESC_20C6    DW    1            ; 1
  5342. ESC_20C8    DW    MN_FSAVE-MN_AAA+03000H
  5343. ESC_20CA    DW    MN_FSTSW-MN_AAA+03000H
  5344. ESC_20CC    DW    MN_FFREE-MN_AAA+03000H
  5345. ESC_20CE    DW    MN_FXCH-MN_AAA+03000H
  5346. ESC_20D0    DW    MN_FST-MN_AAA+03000H
  5347. ESC_20D2    DW    MN_FSTP-MN_AAA+03000H
  5348. ESC_20D4    DW    MN_FADDP-MN_AAA+01000H
  5349. ESC_20D6    DW    MN_FMULP-MN_AAA+01000H
  5350. ESC_20D8    DW    MN_FCOMP-MN_AAA+01000H
  5351. ESC_20DA    DW    MN_FCOMPP-MN_AAA+01000H
  5352. ESC_20DC    DW    MN_FSUBP-MN_AAA+01000H
  5353. ESC_20DE    DW    MN_FSUBRP-MN_AAA+01000H
  5354. ESC_20E0    DW    MN_FDIVP-MN_AAA+01000H
  5355. ESC_20E2    DW    MN_FDIVRP-MN_AAA+01000H
  5356. ESC_20E4    DW    MN_FILD-MN_AAA+01000H
  5357. ESC_20E6    DW    1            ; 1
  5358. ESC_20E8    DW    MN_FIST-MN_AAA+03000H
  5359. ESC_20EA    DW    MN_FISTP-MN_AAA+03000H
  5360. ESC_20EC    DW    MN_FBLD-MN_AAA+01000H
  5361. ESC_20EE    DW    MN_FILD-MN_AAA+01000H
  5362. ESC_20F0    DW    MN_FBSTP-MN_AAA+03000H
  5363. ESC_20F2    DW    MN_FISTP-MN_AAA+03000H
  5364.         DB    10,'Mnemonic '
  5365. MN_AAA        DB    'AA', 0C1H
  5366. MN_AAD        DB    'AA', 0C4H
  5367. MN_AAM        DB    'AA', 0CDH
  5368. MN_AAS        DB    'AA', 0D3H
  5369. MN_ADC        DB    'AD', 0C3H
  5370. MN_ADD        DB    'AD', 0C4H
  5371. MN_AND        DB    'AN', 0C4H
  5372. MN_BYT_PT    DB    'BYTE PTR', 0A0H
  5373. MN_CALL        DB    'CAL', 0CCH
  5374. MN_CALL_DW    DB    'CALL', 9, 'DWORD PT', 0D2H
  5375. MN_CALL_FAR    DB    'CALL', 9, 'FAR PT', 0D2H
  5376. MN_CBW        DB    'CB', 0D7H
  5377. MN_CLC        DB    'CL', 0C3H
  5378. MN_CLD        DB    'CL', 0C4H
  5379. MN_CLI        DB    'CL', 0C9H
  5380. MN_CMC        DB    'CM', 0C3H
  5381. MN_CMP        DB    'CM', 0D0H
  5382. MN_CMPS        DB    'CMP', 0D3H
  5383. MN_CMPSB    DB    'CMPS', 0C2H
  5384. MN_CMPSW    DB    'CMPS', 0D7H
  5385. DATA_2150_CON    DB    'CON:', 0DH
  5386. MN_CWD        DB    'CW', 0C4H
  5387. MN_DAA        DB    'DA', 0C1H
  5388. MN_DAS        DB    'DA', 0D3H
  5389. MN_DB        DB    'D', 0C2H
  5390. MN_DD        DB    'D', 0C4H
  5391. MN_DEC        DB    'DE', 0C3H
  5392. DATA_2165    DB    '[DI]', 0ACH
  5393. MN_DIV        DB    'DI', 0D6H
  5394. DATA_216D_DUP    DB    ' DUP', 0A8H
  5395. MN_DW        DB    'D', 0D7H
  5396. DATA_2174    DB    'DWORD PTR', 0A0H
  5397. DATA_217E    DB    'END', 89H
  5398. DATA_2182    DB    9, 'ENDS', 0DH, 0AH, ';', 0DH, 8AH
  5399. DATA_218C_EQU    DB    9, 'EQU', 89H
  5400. MN_ESC        DB    'ES', 0C3H
  5401. MN_F2XM1    DB    'F2XM', 0B1H
  5402. MN_FABS        DB    'FAB', 0D3H
  5403. MN_FADD        DB    'FAD', 0C4H
  5404. MN_FADDP    DB    'FADD', 0D0H
  5405. MN_FBLD        DB    'FBL', 0C4H
  5406. MN_FBSTP    DB    'FBST', 0D0H
  5407. MN_FCHS        DB    'F'
  5408. MN_CHS        DB    'CH', 0D3H
  5409. MN_FCLEX    DB    'FCLE', 0D8H
  5410. MN_FCOM        DB    'FCO', 0CDH
  5411. MN_FCOMP    DB    'FCOM', 0D0H
  5412. MN_FCOMPP    DB    'FCOMP', 0D0H
  5413. MN_FDECSTP    DB    'FDECST', 0D0H
  5414. MN_FDISI    DB    'FDIS', 0C9H
  5415. MN_FDIV        DB    'FDI', 0D6H
  5416. MN_FDIVP    DB    'F'
  5417. MN_DIVP        DB    'DIV', 0D0H
  5418. MN_FDIVR    DB    'FDIV', 0D2H
  5419. MN_FDIVRP    DB    'FDIVR', 0D0H
  5420. MN_FENI        DB    'FEN', 0C9H
  5421. MN_FFREE    DB    'FFRE', 0C5H
  5422. MN_FIADD    DB    'FIAD', 0C4H
  5423. MN_FICOM    DB    'FICO', 0CDH
  5424. MN_FICOMP    DB    'FICOM', 0D0H
  5425. MN_FIDIV    DB    'FIDI', 0D6H
  5426. MN_FIDIVR    DB    'FIDIV', 0D2H
  5427. MN_FILD        DB    'FIL', 0C4H
  5428. MN_FIMUL    DB    'FIMU', 0CCH
  5429. MN_FINCSTP    DB    'FINCST', 0D0H
  5430. MN_FINIT    DB    'FINI', 0D4H
  5431. MN_FIST        DB    'FIS', 0D4H
  5432. MN_FISTP    DB    'FIST', 0D0H
  5433. MN_FISUB    DB    'FISU', 0C2H
  5434. MN_FISUBR    DB    'FISUB', 0D2H
  5435. MN_FLD        DB    'FL', 0C4H
  5436. MN_FLD1        DB    'FLD', 0B1H
  5437. MN_FLDL2E    DB    'FLDL2', 0C5H
  5438. MN_FLDL2T    DB    'FLDL2', 0D4H
  5439. MN_FLDCW    DB    'FLDC', 0D7H
  5440. MN_FLDENV    DB    'FLDEN', 0D6H
  5441. MN_FLDLG2    DB    'FLDLG', 0B2H
  5442. MN_FLDLN2    DB    'FLDLN', 0B2H
  5443. MN_FLDPI    DB    'FLDP', 0C9H
  5444. MN_FLDZ        DB    'FLD', 0DAH
  5445. MN_FMUL        DB    'FMU', 0CCH
  5446. MN_FMULP    DB    'FMUL', 0D0H
  5447. MN_FNOP        DB    'FNO', 0D0H
  5448. MN_FPATAN    DB    'FPATA', 0CEH
  5449. MN_FPREM    DB    'FPRE', 0CDH
  5450. MN_FPTAN    DB    'FPTA', 0CEH
  5451. MN_FRNDINT    DB    'FRNDIN', 0D4H
  5452. MN_FRSTOR    DB    'FRSTO', 0D2H
  5453. MN_FSAVE    DB    'FSAV', 0C5H
  5454. MN_FSCALE    DB    'FSCAL', 0C5H
  5455. MN_FSQRT    DB    'FSQR', 0D4H
  5456. MN_FST        DB    'FS', 0D4H
  5457. MN_FSTCW    DB    'FSTC', 0D7H
  5458. MN_FSTENV    DB    'FSTEN', 0D6H
  5459. MN_FSTP        DB    'FST', 0D0H
  5460. MN_FSTSW    DB    'FSTS', 0D7H
  5461. MN_FSUB        DB    'FSU', 0C2H
  5462. MN_FSUBP    DB    'FSUB', 0D0H
  5463. MN_FSUBR    DB    'FSUB', 0D2H
  5464. MN_FSUBRP    DB    'FSUBR', 0D0H
  5465. MN_FTST        DB    'FTS', 0D4H
  5466. MN_FXAM        DB    'FXA', 0CDH
  5467. MN_FXCH        DB    'FXC', 0C8H
  5468. MN_FXTRACT    DB    'FXTRAC', 0D4H
  5469. MN_FYL2X    DB    'FYL2', 0D8H
  5470. MN_FYL2XP1    DB    'FYL2XP', 0B1H
  5471. MN_HLT        DB    'HL', 0D4H
  5472. MN_IDIV        DB    'IDI', 0D6H
  5473. MN_IMUL        DB    'IMU', 0CCH
  5474. MN_IN        DB    'I', 0CEH
  5475. MN_INC        DB    'IN', 0C3H
  5476. MN_INT        DB    'IN', 0D4H
  5477. MN_INTO        DB    'INT', 0CFH
  5478. MN_IRET        DB    'IRE', 0D4H
  5479. MN_JA        DB    'J', 0C1H
  5480. MN_JB        DB    'J', 0C2H
  5481. MN_JBE        DB    'JB', 0C5H
  5482. MN_JCXZ        DB    'JCX', 0DAH
  5483. MN_JG        DB    'J', 0C7H
  5484. MN_JGE        DB    'JG', 0C5H
  5485. MN_JL        DB    'J', 0CCH
  5486. MN_JLE        DB    'JL', 0C5H
  5487. MN_JMP        DB    'JM', 0D0H
  5488. MN_JMP_FAR_PTR    DB    'JMP', 9, 'FAR PT', 0D2H
  5489. MN_JMP_DW_PTR    DB    'JMP', 9, 'DWORD PT', 0D2H
  5490. MN_JMP_SHORT    DB    'JMP', 9, 'SHOR', 0D4H
  5491. MN_JNB        DB    'JN', 0C2H
  5492. MN_JNO        DB    'JN', 0CFH
  5493. MN_JNS        DB    'JN', 0D3H
  5494. MN_JNZ        DB    'JN', 0DAH
  5495. MN_JO        DB    'J', 0CFH
  5496. MN_JPE        DB    'JP', 0C5H
  5497. MN_JPO        DB    'JP', 0CFH
  5498. MN_JS        DB    'J', 0D3H
  5499. MN_JZ        DB    'J', 0DAH
  5500. MN_LAHF        DB    'LAH', 0C6H
  5501. MN_LDS        DB    'LD', 0D3H
  5502. MN_LEA        DB    'LE', 0C1H
  5503. MN_LES        DB    'LE', 0D3H
  5504. MN_LOCK        DB    'LOCK', 89H
  5505. MN_LODS        DB    'LOD', 0D3H
  5506. MN_LODSB    DB    'LODS', 0C2H
  5507. MN_LODSW    DB    'LODS', 0D7H
  5508. MN_LOOP        DB    'LOO', 0D0H
  5509. MN_LOOPNZ    DB    'LOOPN', 0DAH
  5510. MN_LOOPZ    DB    'LOOP', 0DAH
  5511. MN_MOV        DB    'MO', 0D6H
  5512. MN_MOVS        DB    'MOV', 0D3H
  5513. MN_MOVSB    DB    'MOVS', 0C2H
  5514. MN_MOVSW    DB    'MOVS', 0D7H
  5515. MN_MUL        DB    'MU', 0CCH
  5516. MN_NEG        DB    'NE', 0C7H
  5517. MN_TAB_NOP    DB    9
  5518. MN_NOP        DB    'NO', 0D0H
  5519. MN_NOT        DB    'NO', 0D4H
  5520. MN_OFFSET    DB    'OFFSET', 0A0H
  5521. MN_OR        DB    'O', 0D2H
  5522. MN_OUT        DB    'OU', 0D4H
  5523. MN_POP        DB    'PO', 0D0H
  5524. MN_POPF        DB    'POP', 0C6H
  5525. MN_PUSH        DB    'PUS', 0C8H
  5526. MN_PUSHF    DB    'PUSH', 0C6H
  5527. MN_RCL        DB    'RC', 0CCH
  5528. MN_RCR        DB    'RC', 0D2H
  5529. MN_REPNZ    DB    'REPNZ', 89H
  5530. MN_REPZ        DB    'REPZ', 89H
  5531. MN_RET_FAR    DB    'RET_FA', 0D2H
  5532. MN_RET_FAR_POP    DB    'RET_FAR_PO', 0D0H
  5533. MN_RET_NEAR    DB    'RET_NEA', 0D2H
  5534. MN_RET_NEAR_POP    DB    'RET_NEAR_PO', 0D0H
  5535. MN_ROL        DB    'RO', 0CCH
  5536. MN_ROR        DB    'RO', 0D2H
  5537. MN_SAHF        DB    'SAH', 0C6H
  5538. MN_SAR        DB    'SA', 0D2H
  5539. MN_SBB        DB    'SB', 0C2H
  5540. MN_SCASB    DB    'SCAS', 0C2H
  5541. MN_SCASW    DB    'SCAS', 0D7H
  5542. MN_SHL        DB    'SH', 0CCH
  5543. MN_SHR        DB    'SH', 0D2H
  5544. DATA_2417    DB    '[SI', 0DDH
  5545. MN_STC        DB    'ST', 0C3H
  5546. MN_STD        DB    'ST', 0C4H
  5547. MN_STI        DB    'ST', 0C9H
  5548. MN_STOSB    DB    'STOS', 0C2H
  5549. MN_STOSW    DB    'STOS', 0D7H
  5550. MN_SUB        DB    'SU', 0C2H
  5551. MN_TITLE    DB    'PAGE',9,'58,132',0DH,0AH ;added characters in string
  5552.         DB    'TITLE', 89H    ; 'PAGE',9,'58,132',0DH,0AH,'TITLE',89H
  5553. MN_TEST        DB    'TES', 0D4H
  5554. MN_WAIT        DB    'WAI', 0D4H
  5555. MN_WORD_PT    DB    'WORD PTR', 0A0H
  5556. MN_XCHG        DB    'XCH', 0C7H
  5557. MN_XLAT        DB    'XLA', 0D4H
  5558. MN_XOR        DB    'XO', 0D2H
  5559. MN_SEG_STK    DB    9, 'SEGMENT'
  5560. FIX_MN_STK    DB    0DH, 8AH
  5561.         DB    'STACK', 0DH, 8AH
  5562. MN_ASSUME    DB    9, 'ASSUME DS:S'
  5563. FIX_DS_SEG    DB    '0000, SS:S0000 ,CS:S0000 ,ES:S0000', 0DH, 8AH
  5564. MN_ORG_$    DB    9, 'ORG', 9, '$', 0ABH
  5565.         ;-------------------------------
  5566. BYTE_REGS_249B    DB    'ALCLDLBLAHCHDHBH'
  5567. WORD_REGS_24AB    DB    'AXCXDXBXSPBPSIDI'
  5568. SEG_REGS_24BB    DB    'ESCSSSDS'
  5569. DATA_24C3    DB    'BXBXBPBP'        ; Data table (indexed access)
  5570. DATA_24CB    DB    'SIDIBPBX'        ; Data table (indexed access)
  5571. DATA_24D3    DB    'IRTWMJCP?'
  5572. DATA_24DC    DB    'DSCE'
  5573.         ;-------------------------------
  5574. MAC_PATCH83    DB    0            ; byte can now be 0 or 0FFH
  5575.         DB    'PATCH83', 9, 'MACRO', 9, 'X', 0DH, 0AH
  5576.         DB    'ORG', 9, '$-3', 0DH, 0AH
  5577.         DB    'DB', 9, '81H', 0DH, 0AH  ;op-code is now 81H
  5578.         DB    'ORG', 9, '$+2', 0DH, 0AH
  5579.         DB    'DB', 9, 'X', 0DH, 0AH
  5580.         DB    'ENDM', 0DH, 0AH
  5581.         DB    ';', 0DH
  5582.         DB    8AH
  5583. MAC_RET_FAR    DB    0
  5584.         DB    'RET_FAR', 9, 'MACRO', 0DH, 0AH
  5585.         DB    'DB', 9, '0CBH', 0DH, 0AH
  5586.         DB    'ENDM', 0DH, 0AH
  5587.         DB    ';', 0DH
  5588.         DB    8AH
  5589. MAC_RET_FAR_P    DB    0
  5590.         DB    'RET_FAR_POP', 9, 'MACRO', 9, 'X', 0DH, 0AH
  5591.         DB    'DB', 9, '0CAH', 0DH, 0AH
  5592.         DB    'DW', 9, 'X', 0DH, 0AH
  5593.         DB    'ENDM', 0DH, 0AH
  5594.         DB    ';', 0DH
  5595.         DB    8AH
  5596. MAC_RET_NEAR    DB    0
  5597.         DB    'RET_NEAR', 9, 'MACRO', 0DH, 0AH
  5598.         DB    'DB', 9, '0C3H', 0DH, 0AH
  5599.         DB    'ENDM', 0DH, 0AH
  5600.         DB    ';', 0DH
  5601.         DB    8AH
  5602. MAC_RET_NEAR_P    DB    0
  5603.         DB    'RET_NEAR_POP', 9, 'MACRO', 9, 'X'
  5604.         DB    0DH, 0AH, 'DB', 9, '0C2H', 0DH, 0AH
  5605.         DB    'DW', 9, 'X', 0DH, 0AH
  5606.         DB    'ENDM', 0DH, 0AH
  5607.         DB    ';', 0DH
  5608.         DB    8AH, 0FFH
  5609.         ;-------------------------------
  5610. MN_PATCH83_POS    DB    9, 'PATCH83', 9, '0', 0DH    ;altered, positive
  5611.         DB    8AH
  5612. MN_PATCH83_NEG    DB    9, 'PATCH83', 9, '0FFH', 0DH    ;New MACRO, negative
  5613.         DB    8AH
  5614. MN_DOT_RADIX_16    DB    '.RADIX', 9, '16', 0DH, 0AH
  5615. MN_CRLF_INIT_VL    DB    'LF', 9, 'EQU', 9, '0AH', 0DH, 0AH
  5616.         DB    'CR', 9, 'EQU', 9, '0DH', 0DH, 0AH
  5617.         DB    ';', 0DH, 0AH
  5618.         DB    ';INITIAL VALUES :', 9, 'CS:IP', 9
  5619. INIT_CS_SEG_FIX    DB    '0000:0000', 0DH, 0AH        ;patch up location
  5620.         DB    ';', 9, 9, 9, 'SS:SP', 9
  5621. INIT_SP_SEG_FIX    DB    '0000:0000', 0DH        ;patch up location
  5622.         DB    8AH
  5623.         ;-------------------------------
  5624. MS_PROMPT_XARQ    DB    'X <$'
  5625. DATA_2627    DB    '>, A <CON>, R <CON> or Q ? $'
  5626.     ;****    DB    'Invalid drive specification$'    ; (apparently unused)
  5627. MS_NOCLOSE_265F    DB    0DH, 0AH, 'Unable to close output file$'
  5628. MS_FILE_267D    DB    'File $'
  5629. MS_NOTFND_2683    DB    ' not found', 7
  5630. ;***DATA_268E    DB    0DH, 0AH, '$'
  5631. MS_CRLF_$    DB    0DH, 0AH, '$'
  5632. MS_DIRFULL_2691    DB    'No room in disk directory$'
  5633. MS_DSKFULL_26AB    DB    'Insufficient space on disk$'
  5634. MS_ERR_RD_26C6    DB    'Error in reading exe file$'
  5635. MS_ERR_SEQ_26E0    DB    'Unrecognized type in /SEQ file near address '
  5636. DATA_270C    DB    '0000H$'
  5637. MS_AD_ORDR_2712    DB    'Addresses out of order near address '
  5638. DATA_2736    DB    '0000H', 0DH, 0AH, '$'
  5639. MS_STR_SEQ_273E    DB    'Undefined structure in SEQ file$'
  5640. MS_RELOC_275E    DB    ';Relo'
  5641.         DB    0E3H
  5642. MS_ASM_2764    DB    'ASM'
  5643. MS_NUL_2767    DB    'NUL '
  5644. MS_SEQ_276B    DB    'SEQ'
  5645. MS_TBL_276E    DB    'TBL'
  5646. MS_HXVL_ER_2771    DB    'Hex value error in /SEQ file$'
  5647. MS_BYT_N_OT_FLE    DB    'Bytes in output file: $'
  5648. MS_FILE_SPEC_ER DB    ' File spec error$'
  5649. MS_REF_TBL_INCOMP DB    7, 'Reference Table Incomplete due to '
  5650. MS_INSUFF_MEM    DB    'Insufficient memory$'
  5651. MS_INVALID_CMD    DB    'Invalid command$'
  5652. MS_WRITING_27FD    DB    0DH, 0AH, 'Writing $'
  5653. MS_BLDG_REF_TBL    DB    'Building Reference Table', 0DH, 0AH, '$'
  5654.         ;-------------------------------
  5655. DATA_2823    DW    0            ; Data table (indexed access)
  5656. DATA_2825    DW    0, 0, 0            ;   4-words
  5657.  
  5658. DATA_282A    DB    0            ; 0th-buffer byte (unused)
  5659. DATA_282B    DB    24 DUP (0)        ; 24-byte buffer
  5660.  
  5661. RM_FIELD_2843    DB    0            ; R/M 3-bit field
  5662. MOD_FIELD_2844    DB    0            ; MOD 2-bit field
  5663. REG_FIELD_2845    DB    0            ; REG 3-bit field
  5664. DATA_2846    DB    0
  5665. DATA_2847    DB    0
  5666. DATA_2848    DB    0
  5667. DATA_2849    DW    0
  5668. DATA_284B    DW    0
  5669. DATA_284D    DW    0, 0
  5670. DATA_2851    DW    0
  5671. DATA_2853    DB    0
  5672. DATA_2854    DW    0            ; Tab counter ?
  5673. DATA_2856    DB    0, 0
  5674. DATA_2858    DW    0
  5675. DATA_285A    DW    0
  5676. DATA_285C    DB    0
  5677. DATA_285D    DB    0, 0
  5678. OPW_TBL_WD_285F    DW    0
  5679. DATA_2861    DB    0
  5680. DATA_2862    DB    0
  5681. DATA_2863    DB    0, 0, 0
  5682. DATA_2866    DB    0
  5683. DATA_2867    DW    0
  5684. OPJ_HI_BYT_2869    DB    0
  5685. OPW_HI_NBL_286A    DB    0            ; The low 4-bits are zeros
  5686. OPCODE_BYT_286B    DB    0            ; used as BYTE/WORD flag
  5687. MOD_REG_RM_286C    DB    0            ; MOD REG R/M Op-code modifier byte
  5688. DATA_286D    DB    0
  5689. DATA_286E    DB    0
  5690. DATA_286F    DB    0
  5691.         ;-------------------------------
  5692. ;DATA_2870    DB    0FFH            ; Data table (indexed access)
  5693. ;DATA_2871    DB    0FFH
  5694. ;DATA_2872    DB    0FFH
  5695. ;DATA_2873    DB    0FFH
  5696. ;DATA_2874    DB    0FFH
  5697. ;DATA_2875    DB    0FFH
  5698. ;DATA_2876    DB    0FFH
  5699. ;RAD16_FLAG_2877 DB    0FFH
  5700. ;DATA_2878    DB    0FFH
  5701.  
  5702. SEQ_SW_BYTES    LABEL    BYTE        ;alias name, used for indexing
  5703. SW_O_OUTPUT_LST    DB    0FFH        ; Data table (indexed access)
  5704. SW_R_TABLE_LST    DB    0FFH
  5705. SW_E_EMBED_REF    DB    0FFH
  5706. SW_L_LABEL_NUMB    DB    0FFH
  5707. SW_F_8087_CODES    DB    0FFH
  5708. SW_T_TRACE_OUTP    DB    0FFH
  5709. SW_B_BYTE_REFS    DB    0FFH
  5710. SW_H_HEX_SUFFIX    DB    0FFH
  5711. SW_M_MACRO_LIST    DB    0FFH
  5712.         ;-------------------------------
  5713. DATA_2879    DB    9, ';', 27H
  5714. DATA_287C    DB    'HL'
  5715.         DB    0A7H
  5716. DATA_287F    DW    0
  5717. DATA_2881    DW    0
  5718. DATA_2883    DW    0
  5719. DATA_2885    DW    0
  5720. DATA_2887    DB    0
  5721. DATA_2888    DB    0
  5722. DATA_2889    DW    0
  5723. DATA_288D    DW    0
  5724. DATA_288F    DW    0
  5725. DATA_2891    DW    0
  5726. DATA_2893    DW    0
  5727. DATA_2895    DB    128 DUP (0)        ; 128-byte buffer
  5728. DATA_2915    DW    0, 0
  5729. DATA_2919    DW    0
  5730. DATA_291B    DB    0
  5731.         ;-------------------------------
  5732. FCB1_291C    DB    0            ; File Control Block #1 (37-bytes)
  5733. FCB1_NAME_291D    DB    8 DUP (20H)        ; 8-Byte File Name
  5734. FCB1_EXT_2925    DB    3 DUP (20H)        ; 3-Byte File Extension
  5735.         DB    0, 0            ; 1-Word Current Block Number
  5736.         DB    0, 0            ; 1-Word Record Size
  5737. FCB1_FILSZ_292C    DB    4 DUP (0)        ; 4-Byte File Size (in bytes)
  5738.         DB    0, 0            ; 1-Word Date
  5739.         DB    0, 0            ; 1-Word Time
  5740.         DB    8 DUP (0)        ; 8-Byte Reserved for DOS
  5741.         DB    0            ; 1-Byte Current Record Number
  5742.         DB    4 DUP (0)        ; 4-Byte Random Record Number
  5743.     ;***    DB    0            ; (apparently unused)
  5744.         ;-------------------------------
  5745. FCB2_2942    DB    0            ; File Control Block #2 (37-bytes)
  5746. FCB2_NAME_2943    DB    8 DUP (20H)        ; 8-Byte File Name
  5747. FCB2_EXT_294B    DB    3 DUP (20H)         ; 3-Byte File Extension
  5748.         DB    0, 0            ; 1-Word Current Block Number
  5749.         DB    0, 0            ; 1-Word Record Size
  5750.         DB    4 DUP (0)        ; 4-Byte File Size (in bytes)
  5751.         DB    0, 0            ; 1-Word Date
  5752.         DB    0, 0            ; 1-Word Time
  5753.         DB    8 DUP (0)        ; 8-Byte Reserved for DOS
  5754.         DB    0            ; 1-Byte Current Record Number
  5755.         DB    4 DUP (0)        ; 4-Byte Random Record Number
  5756.         ;-------------------------------
  5757.     ;***    DB    0            ; (apparently unused)
  5758.  
  5759. KBD_BUF_2968    DB    20H, 0            ; Keyboard Buffer
  5760. DATA_296A    DB    33 DUP (0)        ; Keyboard line buffer
  5761. ;**DATA_298B    DB    132 DUP (0)        ; line buffer
  5762. LINE_BUF_132CHR    DB    132 DUP (0)        ; line buffer
  5763.         ;-------------------------------
  5764. FCB3_2A0F    DB    0            ; FCB #3 - File to be disassembled
  5765. FCB3_NAME_2A10    DB    7 DUP (20H)        ; 8-Byte File Name
  5766. FCB3_EXT_2A17    DB    20H            ; 1-Word File Ext 1st char
  5767. FCB3_EXT1_2A18    DB    20H            ; 1-Byte File Ext 1st char
  5768. FCB3_EXT2_2A19    DB    20H            ; 1-Byte File Ext 2nd char
  5769. FCB3_EXT3_2A1A    DB    20H            ; 1-Byte File Ext 3rd char
  5770. FCB3_BLKNO_2A1B    DB    0, 0            ; 1-Word Current Block Number
  5771. FCB3_RECSZ_2A1D    DB    0, 0            ; 1-Word Record Size
  5772. FCB3_FILSZ_2A1F    DB    4 DUP (0)        ; 4-Byte File Size
  5773. FCB3_DATE_2A23    DB    0, 0            ; 1-Word Date File Created/Updated
  5774.         DB    0, 0            ; 1-Word Time File Created
  5775.         DB    8 DUP (0)        ; 8-Byte Reserved for DOS
  5776. FCB3_CUREC_2A2F    DB    0            ; 1-byte Current Record Number
  5777. FCB3_RNDRC_2A30    DW    0, 0            ; 2-Word Random Record Number
  5778.         ;-------------------------------
  5779. FCB4_2A34    DB    0            ; File Control Block #4 (37-bytes)
  5780. FCB4_NAME_2A35    DB    8 DUP (20H)        ; 8-Byte File Name
  5781.         DB    3 DUP (20H)        ; 3-Byte File Extension
  5782.         DB    0, 0            ; 1-word Current Block number
  5783. FCB4_RECSZ_2A42    DB    0, 0            ; 1-Word Record Size
  5784. FCB4_FILSZ_2A44    DB    0, 0            ; 4-Byte File Size
  5785. FCB4_FLSZH_2A46    DB    0, 0            ; (High word of File Size)
  5786.         DB    0, 0            ; Date
  5787.         DB    0, 0            ; Time
  5788. FCB4_RESRV_2A4C    DB    8 DUP (0)        ; 8-Byte (Reserved area)
  5789. FCB4_CUREC_2A54    DB    0            ; Current Record number
  5790.         DB    4 DUP (0)        ; Random Record number
  5791.         ;-------------------------------
  5792.     ;***    DB    37 DUP (0)        ; (apparently unused)
  5793.  
  5794. DTA1_2A7E    DB    0, 0            ; Disk transfer area #1
  5795. DATA_2A80    DW    0
  5796. DATA_2A82    DW    0
  5797. DATA_2A84    DW    7420H            ; (value left just in case)
  5798. DATA_2A86    DW    0, 0, 0
  5799. DATA_2A8C    DW    0
  5800. DATA_2A8E    DW    0, 0
  5801. DATA_2A92    DW    0            ; initial IP for disassembly
  5802. DATA_2A94    DW    0            ; initial CS for disassembly
  5803. DATA_2A96    DW    0            ; Random Rec Numb for FCB3
  5804.         ;-------------------------------
  5805. DTA2_2A98    DB    0, 0            ; Disk transfer area #2
  5806. DTA2_W2_2A9A    DB    0, 0
  5807.         DB    0, 0            ; (apparently not used)
  5808.         ;-------------------------------
  5809. DTA3_2A9E    DB    0        ; Disk transfer area #3, 512 bytes
  5810. MS_PC_DISASMB    DB    0DH, 0AH, 'The IBM Personal Computer '
  5811.         DB    'Assembly Code Generator', 0DH, 0AH
  5812.         DB    'By J. Gersbach BTVVMLAB(U6081) '
  5813.         DB    'Public Domain Material', 0DH, 0AH
  5814.         DB    'Version 2.01 - Enhancements By '
  5815.         DB    'J. Damke BOEVM1(DAMKE)', 0DH, 0AH
  5816.         DB    'Version 3.01 - Enhancements and code clean-up By '
  5817.         DB    'James E. Galbraith', 0DH, 0AH, 0AH
  5818.         DB    'Command summary :', 0DH, 0AH
  5819.         DB    9, 'X Executable filespec', 0DH, 0AH
  5820.         DB    9, 'A <Assembly Code filespec>', 0DH, 0AH
  5821.         DB    9, 'R <Reference table filespec>', 0DH, 0AH
  5822.         DB    9, 'Q Quit and return to DOS', 0DH, 0AH, 0AH
  5823.         DB    'Executable filespec ? $'
  5824.         DB    124 DUP (0)    ; for a total of 512 bytes in DTA3
  5825.         ;-------------------------------
  5826. DTA4_2C9E    DB    0        ; Disk transfer area #4, 98 bytes
  5827. ;***        DB    96 DUP (0)
  5828. ;**LAST_BYTE    DB    0        ; DATA_2E9E_E    EQU    OFFSET LAST_BYTE+19FH
  5829.  
  5830. SEG_A        ENDS
  5831.  
  5832.         END    START
  5833.